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

文章目录

  • 前言
  • 一,创建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,运行效果。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/912368.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深度学习-图像评分实验(TensorFlow框架运用、读取处理图片、模型建构)

目录 0、实验准备 ①实验环境 ②需要下载的安装包 ③注意事项&#xff08;很关键&#xff0c;否则后面内容看不懂&#xff09; ④容易出现的问题 1、查看数据并读取数据。 2、PIL库里的Image包进行读取&#xff08;.resize更改图片尺寸&#xff0c;并将原始数据归一化处…

Intern大模型训练营(五):书生大模型全链路开源体系笔记

观看视频&#xff0c;可以比较详细地了解到书生大模型全链路开源体系。 其中有几个印象比较深的点&#xff1a; 这张图讲述了书生浦语大模型开源的发展史&#xff0c;同时与主流的llama和Chatgpt模型进行比较&#xff0c;可以看出在参数上&#xff0c;InterLM在努力追赶甚至超…

《 C++ 修炼全景指南:十九 》想懂数据库?深入 B 树的世界,揭示高效存储背后的逻辑

摘要 本文深入探讨了 B 树的原理、操作、性能优化及其实际应用。B 树作为一种平衡多路树结构&#xff0c;因其高效的查找、插入和删除操作广泛应用于数据库与文件系统中。文章首先介绍了 B 树的定义与性质&#xff0c;并详细阐述了节点分裂、合并等核心操作的实现方法。接着&a…

开源模型应用落地-glm模型小试-glm-4-9b-chat-批量推理(二)

一、前言 GLM-4是智谱AI团队于2024年1月16日发布的基座大模型&#xff0c;旨在自动理解和规划用户的复杂指令&#xff0c;并能调用网页浏览器。其功能包括数据分析、图表创建、PPT生成等&#xff0c;支持128K的上下文窗口&#xff0c;使其在长文本处理和精度召回方面表现优异&a…

libgdiplus在MacOS M1上问题:Unable to load shared library ‘libgdiplus‘

libgdiplus在MacOS M1上问题&#xff1a;Unable to load shared library libgdiplus 问题解决步骤1步骤2 问题 在mac上的pycharm中执行下面的代码时出现下面的错误 slide.get_thumbnail( RuntimeError: Proxy error(TypeInitializationException): The type initializer for…

大健康零售行业帮助中心的构建与客户服务优化

在大健康零售行业&#xff0c;客户服务的质量直接影响着企业的品牌形象和市场竞争力。随着数字化转型的推进&#xff0c;构建一个高效、智能的帮助中心成为了提升客户服务和满意度的关键。本文将分析大健康零售行业如何通过构建帮助中心来优化客户服务&#xff0c;并提升客户满…

typescript 补充

文章目录 Pick<T, K> 从 T 中挑选部分属性构成新类型Partial<T>&#xff1a;将类型的所有属性变为可选Required<T>&#xff1a;将类型的属性变为必选。Omit<T, K>&#xff1a;从 T 中移除部分属性构成新类型。Readonly<T>&#xff1a;将类型的属…

Git介绍以及SSH配置

目录 1. Git介绍 1.1 Git的基本原理 1.2 Git的主要功能 1.3 Git的优点 1.4 Git的缺点 2. Git安装 3. SSH配置 1. Git介绍 Git是一款功能强大的分布式版本控制系统&#xff0c;最初由Linux操作系统的开发者Linus Torvalds在2005年开发&#xff0c;用于管理Linux内核的源代…

java多线程sleep() 和 wait() 有什么区别?

大家好&#xff0c;我是锋哥。今天分享关于【java多线程sleep() 和 wait() 有什么区别?】面试题。希望对大家有帮助&#xff1b; java多线程sleep() 和 wait() 有什么区别? 在Java中&#xff0c;sleep() 和 wait() 都是多线程编程中常用的控制线程执行的方法。它们看似有相似…

从无音响Windows 端到 有音响macOS 端实时音频传输播放

以下是从 Windows 端到 macOS 端传输音频的优化方案&#xff0c;基于上述链接中的思路进行调整&#xff1a; Windows 端操作 安装必要软件 安装 Python&#xff08;确保版本兼容且已正确配置环境变量&#xff09;。安装 PyAudio 库&#xff0c;可通过 pip install pyaudio 命令…

测度论原创(三)

Morden Prob 文章目录 Morden ProbWeek3多维扩展和随机向量定理3.1推论&#xff1a;random variable的变换定理3.2 连续函数的可测性定理3.3 可测函数的线性组合关于拓展实数集的延伸定理3.4 可测函数的极限依旧为可测性随机变量的概率律&#xff08;Law of X X X&#xff09;…

【C++】C++移动语义、左值右值、左值引用右值引用、移动构造函数、std::move、移动赋值操作符

二十五、C移动语义、左值和右值、左值引用右值引用、移动构造函数、std::move、移动赋值操作符 本部分讨论一些更高级的C特性&#xff1a;C移动语义。但是讲移动语义之前我们得先了解什么左值右值、左值引用和右值引用。 1、C的左值和右值、左值引用和右值引用左值是有地址的…

uniapp实现H5和微信小程序获取当前位置(腾讯地图)

之前的一个老项目&#xff0c;使用 uniapp 的 uni.getLocation 发现H5端定位不准确&#xff0c;比如余杭区会定位到临平区&#xff0c;根据官方文档初步判断是项目的uniapp的版本太低。 我选择的方式不是区更新uniapp的版本&#xff0c;是直接使用高德地图的api获取定位。 1.首…

Pycharm,2024最新版Pycharm下载安装配置教程!

目录 1、Pycharm 简介2、Pycharm下载3、环境变量的配置4、Pycharm的使用 1、Pycharm 简介 Pycharm资料领取不收米 PyCharm是一种Python IDE&#xff08;Integrated Development Environment&#xff0c;集成开发环境&#xff09;&#xff0c;带有一整套可以帮助用户在使用Py…

(十三)JavaWeb后端开发——MySQL2

目录 1.DQL数据查询语言 1.1基本查询 1.2条件查询 where关键字 1.3分组查询 1.4排序查询 1.5分页查询 2.多表设计 3.多表查询——联查 4.多表查询——子查询​ 5.MySQL 事务 6.事务管理&#xff08;事务进阶&#xff09; 7.MySQL 索引 1.DQL数据查询语言 分为五大…

C++虚继承演示

在继承中如果出现&#xff1a; 这种情况&#xff0c;B和C都继承了A&#xff0c;D继承了B、C 在D中访问A的成员会出现&#xff1a; 这样的警告 是因为在继承时A出现两条分支&#xff1a;ABD、ACD 编译器不知道访问的A中的元素是经过B继承还是C继承 所以B、C在继承A时要用到…

【论文速看】DL最新进展20241109-图像超分、物理信息神经网络、扩散模型

目录 【图像超分】【物理信息神经网络】【扩散模型】 【图像超分】 [2024 红外图像超分] Infrared Image Super-Resolution via Lightweight Information Split Network 论文链接&#xff1a;https://arxiv.org/pdf/2405.10561v2 代码链接&#xff1a;无 单图像超分辨率&…

革命性AI搜索引擎!ChatGPT最新功能发布,无广告更智能!

文章目录 零、前言一、ChatGPT最新AI搜索引擎功能操作指导实战1:搜索新闻实战2:搜索天气实战3:搜索体育消息 二、感受 零、前言 大人&#xff0c;时代变了。 最强 AI 助力下的无广告搜索引擎终于问世。我们期待已久的这一刻终于到来了&#xff0c;从今天起&#xff0c;ChatGPT…

qt QLocale详解

1、概述 QLocale是Qt框架中的一个类&#xff0c;用于处理与本地化相关的操作。它能够方便地实现日期、时间、数字和货币的格式化和解析&#xff0c;支持不同的语言、区域设置和字符集。QLocale提供了一种跨平台的方式来获取当前系统的语言设置&#xff0c;并返回该语言的本地化…

Linux基础4-进程4(环境变量,命令行参数详解)

上篇文章:Linux基础4-进程3(进程优先级&#xff0c;竞争&#xff0c;独立&#xff0c;并行&#xff0c;并发&#xff0c;进程切换)-CSDN博客 本章重点: Linux中环境变量的理解和使用 目录 一. 环境变量概念和查看环境变量 1.1 环境变量概念 1.2 查看环境变量 二. 获取环境变…