2015-04-20 125 views
0

我可以知道如何避免AlertDialog甚至當我點擊確定時關閉。Android - 避免AlertDialog關閉(錯誤處理)

這樣做的原因是在出現錯誤輸入時進行簡單的錯誤處理。

------------------------ 
Input password 
------------------------ 

Password:______________ 

_______________________ 
    | OK | | Cancel| 

我想讓這個對話框在輸入錯誤時保持不變。以便用戶可以再次輸入。

我的代碼:

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
        builder.setTitle("Insert Passcode"); 
        final EditText input = new EditText(this); 
        input.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_TEXT_VARIATION_PASSWORD); 
        builder.setView(input); 

        builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, int which) { 
          m_Text = input.getText().toString() ; 
          if (m_Text.equals(String.valueOf(passcode_value))){ 
           btnAutoLogin.performClick(); 
          } 
          else 
          { 
            xxxxxxxxxxxxxxx 
          } 
         } 
        }); 
        builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, int which) { 
          dialog.cancel(); 
         } 
        }); 

        builder.show(); 

回答

1

是的,您可以簡單地覆蓋像這樣的正面按鈕功能: -

builder.setPositiveButton("OK", null); 
    AlertDialog dialog = builder.create(); 
    dialog .show(); 
    dialog .getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() { 

        @Override 
        public void onClick(View v) { 
      // implement your code here 
    }); 
0

的按鈕來創建自定義監聽器類首先點擊事件如下:

class CustomListener implements View.OnClickListener { 
private final Dialog dialog; 
public CustomListener(Dialog dialog) { 
    this.dialog = dialog; 
} 
@Override 
public void onClick(View v) { 

    // Do whatever you want here 

    // If tou want to close the dialog, uncomment the line below 
    //dialog.dismiss(); 
} 

}

,當你顯示對話框或初始化對話框按鈕如下:

AlertDialog dialog = dialogBuilder.create(); 
dialog.show(); 
Button button = dialog.getButton(DialogInterface.BUTTON_POSITIVE); 
button.setOnClickListener(new CustomListener(dialog));