2015-06-12 88 views
1

我對其上的EditText有警報對話框。如果用戶按下正向按鈕並且EditText爲空,則警報對話框關閉。現在我想禁用關閉,如果用戶留下編輯文字爲空。怎麼做?如果EditText爲空,則禁用關閉AlertDialog

這是警告對話框代碼:)這樣

@Override 
     public void onClick(View v) { 

      AlertDialog.Builder wndInput = new AlertDialog.Builder(
        MainActivity.this); 

      final EditText txtEditScraps = new EditText(MainActivity.this); 
      txtEditScraps.setInputType(InputType.TYPE_CLASS_PHONE); 
      wndInput.setTitle("Number of scraps:"); 
      wndInput.setCancelable(false); 


      wndInput.setNegativeButton("CANCEL", 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int which) { 

         } 
        }); 

      wndInput.setPositiveButton("OK", 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int which) {                                    
         } 
        }); 

      wndInput.setView(txtEditScraps); 
      wndInput.create().show(); 

     } 
+0

嘿約瑟夫,請看看我的答案。 –

回答

4

首先做的最後兩行代碼的微小變化..

wndInput.setView(txtEditScraps); 
final AlertDialog alertDialog = wndInput.create(); 
alertDialog.show(); 

意味着你只需要參考的警告對話框中..然後添加以下代碼。

alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
      Boolean wantToCloseDialog = (txtEditScraps.getText().toString().trim().isEmpty()); 
     // if EditText is empty disable closing on possitive button  
     if (!wantToCloseDialog)  
       alertDialog.dismiss(); 
     } 
}); 
+1

就是這樣。非常感謝! – Josef

1

您可以檢查裏面的onClick(的一個條件方法:

wndInput.setPositiveButton("OK", 
         new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, int which) { 

         String etContent=txtEditScraps.getText(); 

         if(!etContent.isEmpty()){ 

           wndInput.dismiss(); 
            } 
         else{// do nothing or give editText is empty}                                   
          } 
         }); 
3

嘗試這樣

final AlertDialog alertDialog = new AlertDialog.Builder(this) 
       .setTitle("My dialog") 
       .setPositiveButton(android.R.string.ok, null) 
       .setNegativeButton(android.R.string.cancel, null) 
       .create(); 

     alertDialog.setOnShowListener(new DialogInterface.OnShowListener() { 

      @Override 
      public void onShow(DialogInterface dialog) { 

       Button button = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE); 
       button.setOnClickListener(new View.OnClickListener() { 

        @Override 
        public void onClick(View view) { 
         Toast.makeText(MainActivity.this, "Now dialog will not close", Toast.LENGTH_LONG).show(); 
         //alertDialog.dismiss(); 
        } 
       }); 
      } 
     }); 
     alertDialog.show(); 
1

您需要獲得EditText的文字,如果長度爲EditText值爲空,則請禁用您的setPositiveButton事件。

你可以做這樣的事情。

@Override 
     public void onClick(View v) { 

      AlertDialog.Builder wndInput = new AlertDialog.Builder(
        MainActivity.this); 

      final EditText txtEditScraps = new EditText(MainActivity.this); 
      txtEditScraps.setInputType(InputType.TYPE_CLASS_PHONE); 
      wndInput.setTitle("Number of scraps:"); 
      wndInput.setCancelable(false); 


      wndInput.setNegativeButton("CANCEL", 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int which) { 

         } 
        }); 

      wndInput.setPositiveButton("OK", 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int which) {   
          String _edtValue = txtEditScraps.getText().toString().trim(); 
          if (_edtValue.length()==0&&_edtValue==null&&_edtValue.equalsIgnoreCase("")) { 
           //do nothing. 
          } else { 
           // dismiss your alert. 
          } 
         } 
        }); 

      wndInput.setView(txtEditScraps); 
      wndInput.create().show(); 

     } 
0
@Override 
public void onClick(View v) { 

    AlertDialog.Builder wndInput = new AlertDialog.Builder(
      MainActivity.this); 

    final EditText txtEditScraps = new EditText(MainActivity.this); 
    txtEditScraps.setInputType(InputType.TYPE_CLASS_PHONE); 
    wndInput.setTitle("Number of scraps:"); 
    wndInput.setCancelable(false); 


    wndInput.setNegativeButton("CANCEL", 
      new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
       wndInput.dismiss(); 
       } 
      }); 

    wndInput.setPositiveButton("OK", 
      new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
       if(txtEditScraps.getText().toString().trim()=="") { 
        txtEditScraps.requestFocus(true); 
       } 
       else { 
        wndInput.dismiss(); 
       } 
       } 
      }); 

    wndInput.setView(txtEditScraps); 
    wndInput.create().show(); 

}