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 @Override 5 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 });
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。