当前位置: 首页 > article >正文

移动应用开发:实现简易调查问卷

文章目录

  • 前言
  • 一,创建SurveyActivity活动
  • 二,设计UI
  • 三,创建字符串资源文件
  • 四,编写活动代码
  • 五,更新 AndroidManifest.xml
  • 六,运行测试


前言

在Android Studio中开发一个调查问卷界面思路解析:

  1. 创建布局文件
    首先,在res/layout目录下创建一个新的XML布局文件,activity_survey.xml。在这个文件中,可以使用LinearLayout来组织UI组件。
    在这里插入图片描述

  2. 创建Activity类
    java目录下创建一个新的Activity类,SurveyActivity.java

  3. 初始化Spinner和设置按钮监听器
    SurveyActivityonCreate方法中,需要初始化Spinner(下拉框),并设置按钮的点击监听器。

  4. 验证数据并显示结果
    在提交按钮的点击监听器中,需要验证所有字段是否都已填写。如果未填写,则显示一个Toast消息提示用户。如果已填写,则将结果显示在TextView中。

  5. 退出应用程序
    在退出按钮的点击监听器中,可以调用finish()方法来关闭当前Activity,从而退出应用程序。

一,创建SurveyActivity活动

1,右击项目根目录——选择“New”——Activity——Empty Activity。
在这里插入图片描述
2,输入活动名:“SurveyActivity”,语言选择“Java”。
在这里插入图片描述
3,查看文件是否成功创建。
在这里插入图片描述

二,设计UI

1,打开activity_survey.xml文件,单击code,编写代码,设计UI。
在这里插入图片描述
2,源代码

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="16dp"
    tools:context=".SurveyActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:textStyle="bold"
        android:layout_marginBottom="10dp"
        android:text="校园问卷调查表"
        android:textSize="38dp"/>

    <!-- 姓名 -->
    <EditText
        android:id="@+id/editTextName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="姓名"
        android:inputType="textPersonName" />

    <!-- 出生日期 -->
    <EditText
        android:id="@+id/editTextAge"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="出生日期 (yyyy-MM-dd)"
        android:inputType="date" />

    <!-- 性别 -->
    <Spinner
        android:id="@+id/spinnerGender"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <!-- 院系 -->
    <Spinner
        android:id="@+id/spinnerDepartment"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <!-- 电话号码 -->
    <EditText
        android:id="@+id/etPhoneNumber"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="电话号码"
        android:inputType="phone" />

    <!-- 对食堂是否满意 -->
    <RadioGroup
        android:id="@+id/rgSatisfaction"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="食堂满意度:"
            android:textSize="18dp"/>

        <RadioButton
            android:id="@+id/rbSatisfied"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="满意" />

        <RadioButton
            android:id="@+id/rbNotSatisfied"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="不满意" />
    </RadioGroup>

    <!-- 建议 -->
    <EditText
        android:id="@+id/etSuggestion"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="建议"
        android:inputType="textMultiLine"
        android:minLines="3" />

    <!-- 按钮 -->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:gravity="center">

        <Button
            android:id="@+id/btnExit"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="退出" />

        <Button
            android:id="@+id/btnSubmit"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="提交"
            android:layout_marginStart="16dp" />
    </LinearLayout>

    <!-- 结果显示 -->
    <ScrollView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center">

        <TextView
            android:id="@+id/tvResult"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:visibility="gone"
            android:padding="16dp"
            android:background="@android:color/holo_blue_light"
            android:textColor="@android:color/white" />
    </ScrollView>

</LinearLayout>

三,创建字符串资源文件

1,在 res/values/strings.xml 文件中添加以下数组资源。
在这里插入图片描述
2,源码。

<!-- Gender options -->                 
<string-array name="gender_options">    
    <item></item>                      
    <item></item>                      
    <item>其他</item>                     
</string-array>                         
                                        
<!-- Department options -->             
<string-array name="department_options">
    <item>计算机科学</item>                  
    <item>电子工程</item>                   
    <item>机械工程</item>                   
    <item>商业管理</item>                   
    <item>其他</item>                     
</string-array>                         

四,编写活动代码

1,打开并编写SurveyActivity.java代码,处理用户输入的数据以及按钮点击事件。
在这里插入图片描述

2,源码。

package com.example.mycontacts;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

/**
 * 功能:简易问卷调查
 * 日期:2024年11月9日
 * 作者:梁辰兴
 */


public class SurveyActivity extends AppCompatActivity {

    private EditText editTextName, editTextAge, etPhoneNumber, etSuggestion;
    private Spinner spinnerGender, spinnerDepartment;
    private RadioGroup rgSatisfaction;
    private RadioButton rbSatisfied, rbNotSatisfied;
    private Button btnExit, btnSubmit;
    private TextView tvResult;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_survey);

        // 初始化UI组件
        editTextName = findViewById(R.id.editTextName);
        editTextAge = findViewById(R.id.editTextAge);
        etPhoneNumber = findViewById(R.id.etPhoneNumber);
        etSuggestion = findViewById(R.id.etSuggestion);

        spinnerGender = findViewById(R.id.spinnerGender);
        spinnerDepartment = findViewById(R.id.spinnerDepartment);

        rgSatisfaction = findViewById(R.id.rgSatisfaction);
        rbSatisfied = findViewById(R.id.rbSatisfied);
        rbNotSatisfied = findViewById(R.id.rbNotSatisfied);

        btnExit = findViewById(R.id.btnExit);
        btnSubmit = findViewById(R.id.btnSubmit);
        tvResult = findViewById(R.id.tvResult);

        //用性别选项填充Spinner
        ArrayAdapter<CharSequence> genderAdapter = ArrayAdapter.createFromResource(this,
                R.array.gender_options, android.R.layout.simple_spinner_item);
        genderAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinnerGender.setAdapter(genderAdapter);

        // 用部门选项填充Spinner
        ArrayAdapter<CharSequence> departmentAdapter = ArrayAdapter.createFromResource(this,
                R.array.department_options, android.R.layout.simple_spinner_item);
        departmentAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinnerDepartment.setAdapter(departmentAdapter);

        // 设置按钮点击监听器
        btnExit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });

        btnSubmit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String name = editTextName.getText().toString();
                String age = editTextAge.getText().toString();
                String phone = etPhoneNumber.getText().toString();
                String suggestion = etSuggestion.getText().toString();

                String gender = (String) spinnerGender.getSelectedItem();
                String department = (String) spinnerDepartment.getSelectedItem();

                int satisfaction = rgSatisfaction.getCheckedRadioButtonId();
                String satisfactionStatus = (satisfaction == rbSatisfied.getId()) ? "满意" : "不满意";

                if (name.isEmpty() || age.isEmpty() || phone.isEmpty() || gender.isEmpty() || department.isEmpty()) {
                    Toast.makeText(SurveyActivity.this, "请填写所有必填项", Toast.LENGTH_SHORT).show();
                } else {
                    StringBuilder result = new StringBuilder();
                    result.append("姓名: ").append(name).append("\n");
                    result.append("出生日期: ").append(age).append("\n");
                    result.append("性别: ").append(gender).append("\n");
                    result.append("院系: ").append(department).append("\n");
                    result.append("电话号码: ").append(phone).append("\n");
                    result.append("食堂满意度: ").append(satisfactionStatus).append("\n");
                    result.append("建议: ").append(suggestion).append("\n");

                    tvResult.setText(result.toString());
                    tvResult.setVisibility(View.VISIBLE);
                }
            }
        });
    }
}

五,更新 AndroidManifest.xml

确保在 AndroidManifest.xml 中声明了 SurveyActivity:
在这里插入图片描述

六,运行测试

1,选择SurveyActivity.java,右击,选择运行,或单击运行按钮,启动活动。
在这里插入图片描述
2,运行效果。

在这里插入图片描述


http://www.kler.cn/a/393321.html

相关文章:

  • 美畅物联丨观看实时视频对服务器带宽有什么要求?
  • Python定位Span标签中的文字:实战指南
  • 机器学习领域有哪些算法/模型可以应用在酒店推荐系统里面?
  • 利用 Elasticsearch 实现高效标签(Tag)匹配
  • MVC基础——市场管理系统(二)
  • leetcode 二进制数转字符串
  • 【go从零单排】File Paths文件路径
  • [ 网络安全介绍 5 ] 为什么要学习网络安全?
  • 自动化测试策略 —— 新功能还是老功能的回归测试?
  • 地面沉降数值模拟/三维地质建模数据处理技术应用
  • 机器学习5_支持向量机_原问题和对偶问题
  • 数字字符串格式化
  • 【Rust调用Windows API】杀掉指定进程(包括兄弟进程、子进程、父进程)
  • 人力资源招聘系统-提升招聘效率与质量的关键工具
  • Docker 部署Nacos 单机部署 MYSQL数据持久化
  • 计算机网络(4)之交换技术,分层技术和默认网关
  • 怎么在MindMaster里插入剪贴画?
  • c++ 二分查找
  • Mac Nginx 前端打包部署
  • Vue开发风格
  • Scala的Map集合练习
  • 关键字“退出、结束、跳过”(day13)
  • 2024 年 10 月区块链游戏研报:活跃用户与链上游戏生态的最新趋势解读
  • 飞牛私有云访问外网
  • Python发展历程·练习题 --- 《跟着小王学Python》
  • Golang | Leetcode Golang题解之第553题最优除法