中山大学智慧健康服务平台基础的事件处理

一、实验题目

中山大学智慧健康服务平台应用开发

第五周任务 基础的事件处理

二、实现内容

实现一个Android应用,界面呈现如图中的效果。
在这里插入图片描述

要求
  • 该界面为应用启动后看到的第一个界面。
  • 各控件处理的要求
    • 点击搜索按钮:
      • 如果搜索内容为空,弹出Toast信息“搜索内容不能为空”。
      • 如果搜索内容为“Health”,根据选中的RadioButton项弹出“搜索成功”对话框。
      • 点击“确定”,弹出Toast信息——对话框“确定”按钮被点击。
        点击“取消”,弹出Toast 信息——对话框“取消”按钮被点击。
        否则弹出搜索失败对话框,对话框点击效果同上。
    • RadioButton选择项切换:选择项切换之后,弹出Toast信息“XX被选中”,例如从图片切换到视频,弹出Toast信息“视频被选中”

三、课堂实验结果

(1)实验截图

  1. 搜索内容为空:
    在这里插入图片描述
  2. 输入Health:
    在这里插入图片描述
  3. 点击确定按钮:
    在这里插入图片描述
  4. 点击取消按钮:
    在这里插入图片描述
  5. 输入错误信息搜索失败:
    在这里插入图片描述
  6. RadioButton选择项切换:
    在这里插入图片描述

(2)实验步骤以及关键代码

按照题目的要求顺序来实现相关的代码。关键是给搜索按钮加一个监听函数,点击“搜索”就会执行函数。通过searchText.getText().toString()得到输入框中的内容,根据输入的不同执行不同的语句。下面是输入为空时的代码:

if (TextUtils.isEmpty(searchText.getText().toString())) {
                    Toast.makeText(getApplication(), "搜索内容不能为空",
                            Toast.LENGTH_SHORT).show();
                }

同理在输入为"Health"时提示"搜索成功",注意在前面加上radioButton.getText().toString()得到选中按钮的内容。
弹出对话框后,对话框采用了链式调用,使用setTitle()和setMessage()等方法,这些函数的返回值都是当前对话框对象,代码如下:

alertDialog.setTitle("提示").setMessage(radioButton.getText().
            toString()+"搜索成功").setPositiveButton("确认",
            new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                            Toast.makeText(getApplicationContext(),
                                    "对话框“确定”按钮被点击",Toast.LENGTH_SHORT).show();
                    }
             }).setNegativeButton("取消",
             new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                            Toast.makeText(getApplicationContext(),
                                    "对话框“取消”按钮被点击",Toast.LENGTH_SHORT).show();
                    }
             }).create();

当输入既不是空也不是Health时,弹出搜索失败,代码和上述类似。
最后一步是在切换button按钮时弹出Toast信息“XX被选中”。关键在于给radioGroup加一个监听函数,那么在切换时执行函数即可。代码如下:

String id = "";
RadioButton radio1 = findViewById(R.id.radio_button1);
if (radio1.getId() == checkedId) id = radio1.getText().toString();
RadioButton radio2 = findViewById(R.id.radio_button2);
if (radio2.getId() == checkedId) id = radio2.getText().toString();
RadioButton radio3 = findViewById(R.id.radio_button3);
if (radio3.getId() == checkedId) id = radio3.getText().toString();
RadioButton radio4 = findViewById(R.id.radio_button4);
if (radio4.getId() == checkedId) id = radio4.getText().toString();
Toast.makeText(getApplication(), id + "被选中", Toast.LENGTH_SHORT).show();

代码显得比较冗余,但我暂时没有想到其他办法去来完成这一部分。

(3)实验遇到的困难以及解决思路

这次实验遇到的问题都比较小,很快都可以解决。比如开始写对话框时一直不显示,最后发现是漏掉了alertDialog.show();。还有就是这一句RadioButton radioButton = findViewById(radioGroup. getCheckedRadioButtonId());开始我把这一句写在了监听函数的外面,导致在点了搜索按钮后对话框中不是选中项,后来把这一句拖到函数里面就行了。
然后就是切换button按钮时弹出Toast信息想了比较久,开始我准备直接看checkedId的值,但发现这个值是一个很大的整数,使用起来并不方便,最后用了getId()函数成功实现了这一部分。


四、实验思考及感想

这次的实验添加了很多逻辑的判断,所以较第一次实验UI布局难度增大了很多,所以要花跟更多的时间去查找相关的资料,否则都不会写逻辑判断语句。虽然老师给的PPT中已经包括了大部分的内容,但是自己写起来还是会遇到很多的问题,例如我开始把setOnClickListener写在了onCreate函数的外面,一直报错button没有这个函数,当时就懵了,后来把整个监听事件写在onCreate里面才解决。这个bug让我明白不能单纯照搬函数,而要理解函数之间的关系和作用。只要掌握了某个关键的语句用法,其他的都可以举一反三,最后成功完成了这次实验。
虽然是实验完成了,但是还有很多函数和关键字的用法我还不是非常熟悉,所以还是应该花多一点时间去熟悉和了解函数语句的用法,这样才可以在以后的实验节省时间,提高效率。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值