標籤:
一、目標
在彈出的自訂對話方塊中,當點擊“確認”時,儲存密碼,關閉對話方塊;當點擊“取消”時關閉對話方塊。同時,如果不輸入密碼或輸入密碼錯誤則彈出相應的提示。
二、代碼實現。
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 });View Code
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 });View Code
Android執行個體-手機安全衛士(十一)-自訂對話方塊點擊事件處理