首页 > 代码库 > Android实例-手机安全卫士(十一)-自定义对话框点击事件处理
Android实例-手机安全卫士(十一)-自定义对话框点击事件处理
一、目标
在弹出的自定义对话框中,当点击“确认”时,保存密码,关闭对话框;当点击“取消”时关闭对话框。同时,如果不输入密码或输入密码错误则弹出相应的提示。
二、代码实现。
1、在主界面代码类(HomeActivity)中定义设置防盗密码对话框中的对应TextView、Button等成员变量,并在显示设置防盗密码对话框方法(showSetPwdDialog)中通过view.findViewById方法找到对应的组件;
2、为“取消”按钮设置取消操作的监听事件并进行处理。通过setOnClickListener(OnClickListener l)方法设置监听事件,参数new OnClickListener出来;
①.在对话框采用show()方法时会返回AlertDialog对象,所以在主代码中新建成员变量(alertDialog),然后接收返回的AlertDialog对象;
②.在OnClickListener中的onClick方法中,通过AlertDialog对象的dismiss()方法使对话框消失。
“取消”按钮设置监听事件的方法:
1 //设置点击“取消”使对话框消失的点击事件2 setpwddialog_bt_cancel.setOnClickListener(new OnClickListener() {3 4 @Override5 public void onClick(View v) {6 alertDialog.dismiss();7 }8 });
3、为“确认”按钮设置设置监听事件。通过setOnClickListener(OnClickListener l)方法设置监听事件,参数new OnClickListener出来;
①.取出输入框内的密码。通过TextView对象的getText()得到文本并通过toString()转成字符串再通过trim()去除空格,得到String对象的输入密码;
②.同理取得确认框中密码。
③.判断密码情况。如果都为空(通过TextUtils.isEmpty(string)方法判断)则提示相关信息。如果不为空且两个密码一致(通过equals方法判断),则保存密码,对话框消失,并进入手机防盗页面。
③.1 保存密码。采用SharedPreferences对象,所以需要新建该类型的成员变量,然后通过getSharedPreferences(String name, int mode),设置保存密码文件(String name)所在的路径和类型( int mode),再通过edit()获取一个Editor对象(取名editor)。再通过Editor对象(editor)的putString(String key, String value)方法放入密码(密码采用String类型),最后Editor对象(editor)的commit()方法提交。
③.2 取消对话框。通过AlertDialog对象的dismiss()方法使对话框消失。
③.3 进入手机防盗页面(后续章节介绍)。
“确认”按钮设置监听事件的方法:
1 setpwddialog_bt_conf.setOnClickListener(new OnClickListener() { 2 3 @Override 4 public void onClick(View v) { 5 //得到输入框中的密码 6 String password = setpwddialog_et_pwd.getText().toString().trim(); 7 String password_conf = setpwddialog_et_pwd_conf.getText().toString().trim(); 8 if(TextUtils.isEmpty(password)||TextUtils.isEmpty(password_conf)){ 9 //判断输入的密码非空,则提示相关信息10 Toast.makeText(HomeActivity.this, "输入有误,请重新输入", 0).show();11 }else if(password.equals(password_conf)){12 //两个输入的密码相等,则保存密码,对话框消失,并进入手机防盗页面。密码采用SharedPreferences对象以String类型保存13 sp = getSharedPreferences("safe password", Activity.MODE_PRIVATE);14 Editor editor = sp.edit(); 15 editor.putString("password", password);16 editor.commit();17 alertDialog.dismiss();18 Toast.makeText(HomeActivity.this, "密码设置成功,保存完成", 0).show();19 }else{20 Toast.makeText(HomeActivity.this, "密码不一致", 0).show();21 return;22 }23 }24 });
Android实例-手机安全卫士(十一)-自定义对话框点击事件处理