手机开发--中山大学智慧健康服务健康平台基础的事件处理

一、实验题目

中山大学智慧健康服务平台应用开发,基础的事件处理

二、实现内容

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

三、课堂实验结果

(1)实验截图

截图
截图
截图
截图
截图
截图

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

只处理MainActivity.java文件

package com.example.a28798.firstproject;

import android.content.DialogInterface;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    //static RadioGroup radioGroup;
    private int chooseId = R.id.radioButton;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        radioClick();
        buttonClick();
    }

    private void buttonClick(){
        final AlertDialog.Builder alertDialogSuccess1=new AlertDialog.Builder(this);
        alertDialogSuccess1.setTitle("提示").setMessage("图片搜索成功").setPositiveButton("确认",
            new DialogInterface.OnClickListener(){
            @Override
                public void onClick(DialogInterface dialogInterface,int i) {
                Toast.makeText(getApplication(), "对话框“确定”按钮被点击", Toast.LENGTH_SHORT).show();
            }}).setNegativeButton("取消",
                new DialogInterface.OnClickListener(){
                    @Override
                    public  void onClick(DialogInterface dialogInterface,int i){
                        Toast.makeText(getApplication(), "对话框“取消”按钮被点击", Toast.LENGTH_SHORT).show();
                    }}).create();

        final AlertDialog.Builder alertDialogSuccess2=new AlertDialog.Builder(this);
        alertDialogSuccess2.setTitle("提示").setMessage("视频搜索成功").setPositiveButton("确认",
                new DialogInterface.OnClickListener(){
                    @Override
                    public void onClick(DialogInterface dialogInterface,int i) {
                        Toast.makeText(getApplication(), "对话框“确定”按钮被点击", Toast.LENGTH_SHORT).show();
                    }}).setNegativeButton("取消",
                new DialogInterface.OnClickListener(){
                    @Override
                    public  void onClick(DialogInterface dialogInterface,int i){
                        Toast.makeText(getApplication(), "对话框“取消”按钮被点击", Toast.LENGTH_SHORT).show();
                    }}).create();

        final AlertDialog.Builder alertDialogSuccess3=new AlertDialog.Builder(this);
        alertDialogSuccess3.setTitle("提示").setMessage("问答搜索成功").setPositiveButton("确认",
                new DialogInterface.OnClickListener(){
                    @Override
                    public void onClick(DialogInterface dialogInterface,int i) {
                        Toast.makeText(getApplication(), "对话框“确定”按钮被点击", Toast.LENGTH_SHORT).show();
                    }}).setNegativeButton("取消",
                new DialogInterface.OnClickListener(){
                    @Override
                    public  void onClick(DialogInterface dialogInterface,int i){
                        Toast.makeText(getApplication(), "对话框“取消”按钮被点击", Toast.LENGTH_SHORT).show();
                    }}).create();

        final AlertDialog.Builder alertDialogSuccess4=new AlertDialog.Builder(this);
        alertDialogSuccess4.setTitle("提示").setMessage("资讯搜索成功").setPositiveButton("确认",
                new DialogInterface.OnClickListener(){
                    @Override
                    public void onClick(DialogInterface dialogInterface,int i) {
                        Toast.makeText(getApplication(), "对话框“确定”按钮被点击", Toast.LENGTH_SHORT).show();
                    }}).setNegativeButton("取消",
                new DialogInterface.OnClickListener(){
                    @Override
                    public  void onClick(DialogInterface dialogInterface,int i){
                        Toast.makeText(getApplication(), "对话框“取消”按钮被点击", Toast.LENGTH_SHORT).show();
                    }}).create();

        final AlertDialog.Builder alertDialogFail=new AlertDialog.Builder(this);
        alertDialogFail.setTitle("提示").setMessage("搜索失败").setPositiveButton("确认",
                new DialogInterface.OnClickListener(){
                    @Override
                    public void onClick(DialogInterface dialogInterface,int i) {
                        Toast.makeText(getApplication(), "对话框“确定”按钮被点击", Toast.LENGTH_SHORT).show();
                    }}).setNegativeButton("取消",
                new DialogInterface.OnClickListener(){
                    @Override
                    public  void onClick(DialogInterface dialogInterface,int i){
                        Toast.makeText(getApplication(), "对话框“取消”按钮被点击", Toast.LENGTH_SHORT).show();
                    }}).create();

        Button button = (Button)findViewById(R.id.button2);
        final EditText editText = (EditText)findViewById(R.id.editText);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(editText.getText().length() == 0){
                    Toast.makeText(getApplication(), "搜索内容不能为空",Toast.LENGTH_SHORT).show();
                }
                else if(editText.getEditableText().toString().equals("Health")){
                    if(chooseId==R.id.radioButton){
                        alertDialogSuccess1.show();
                    }
                    else if(chooseId == R.id.radioButton2){
                        alertDialogSuccess2.show();
                    }
                    else if(chooseId == R.id.radioButton3){
                        alertDialogSuccess3.show();
                    }
                    else{
                        alertDialogSuccess4.show();
                    }
                }
                else {
                    alertDialogFail.show();
                }
            }
        });
    }

    private void radioClick(){
        RadioGroup radioGroup = (RadioGroup)findViewById(R.id.radioGroup);
        //radioGroup = (RadioGroup)findViewById(R.id.radioGroup);
        radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                chooseId = checkedId;
                if(checkedId == R.id.radioButton){
                    Toast.makeText(getApplication(), "图片被选中",Toast.LENGTH_SHORT).show();
                }
                else if (checkedId == R.id.radioButton2){
                    Toast.makeText(getApplication(), "视频被选中",Toast.LENGTH_SHORT).show();
                }
                else if(checkedId == R.id.radioButton3){
                    Toast.makeText(getApplication(), "问答被选中",Toast.LENGTH_SHORT).show();
                }
                else{
                    Toast.makeText(getApplication(), "资讯被选中",Toast.LENGTH_SHORT).show();
                }
            }
        });
    }
}

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

  • 第一个遇到的问题是在activity_main.xml中用OnClick='XXX'然后在MainActivity.java中实现相对应的函数,然后App疯狂闪退,可能是因为Theme的问题,但是果然放弃了这种方案,直接在MainActivity.java中绑定了。
  • 第二个遇到的问题是直接在MainActivity.java写上button.setOnClickListener(new View.OnClickListener() {})函数,这样写会提示setOnClickListener无法识别,需要把这个函数写在另一个函数里面,然后用protected void onCreate(Bundle savedInstanceState) {}调用。
  • 第三个问题就比较严重了,至今没有更好的解决方案。就是对话框的问题,因为对话框是final,所以不能修改,一开始是在alertDialogFail.setTitle(XX).setMessage(XXXX)中的setTitle中做文章,因为要通过识别radioGroup中选中的信息来显示相对应的信息,所以先通过了radioGroup的id取得了radioGroup,然后通过radioGroup.getCheckedRadioButtonId()获得被点击的radioButton,然后再用radioButton.getText()获取字符串,但是结果显示都是第一个选中,因为默认状态是选中第一个,而且对话框预制好了之后没法更改,所以就直接把四个radioButton对应的对话框都预制了一下,解决了问题。

四、实验思考及感想

  • 没有学过Java语言,还有很多性质不知道,遇到了问题不知道是安卓开发的问题,还是java的问题,会耗费很长时间,不过解决了就印象深刻了。
  • 会出现一些意料之外的问题,比如为什么选中其他的radioButton还是显示第一个,这种问题,应该还是很难查得到的,网上一般都是radioButton的用法之类的,这时候还需要自己的思考,比如为什么选中其他的没有反应,可以通过看日志得知错误信息,还要理解函数什么时候被调用,并且知道每个阶段的预期情况,总体来说还是可以解决的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值