開發過程中,有時候會有這樣的需求:
點擊某個按鈕之后顯示一個對話框,對話框上面有一個輸入框,並且有“確認”和“取消”兩個按鈕。當用戶點擊確認按鈕時,需要對輸入框的內容進行判斷。如果內容為空則不關閉對話框,並toast提示。
使用AlertDialog.Builder創建對話框時,可以使用builder.setNegativeButton和builder.setPositiveButton兩個方法設置取消按鈕和確認按鈕的點擊事件。然而問題在於,只要用戶點擊了確認按鈕或者取消按鈕,系統就會自動將對話框關閉。
解決此問題的方法是:
(1)使用builder.setPositiveButton設置確認按鈕的文字,但是不添加監聽。即:
builder.setPositiveButton(R.string.main_ok, null);
(2)得到AlertDialog對象:
AlertDialog alertDialog = builder.create();
alertDialog.show();
(3)獲取到對話框上的確認按鈕,然后對該按鈕添加普通的View.OnClickListener。在用戶輸入正確的時候,手動調用alertDialog.dismiss()關閉對話框。
alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String cardNum = cardNumET.getText().toString().trim(); if (cardNum.length() == 0) { Utility.showToast(mActivity, "請輸入編號"); return; } //發送 sendProfile(cardNum); alertDialog.dismiss(); } });