2015-09-10 10 views
9

द्वारा AlertDialog का (सकारात्मक) बटन अक्षम करें डिफ़ॉल्ट द्वारा एंड्रॉइड AlertDialog के सकारात्मक बटन को आप कैसे अक्षम करते हैं?डिफ़ॉल्ट

यह काफी सकारात्मक बटन (इस मामले "सहेजें" में) करना चाहते हैं (देखें में परिवर्तन किया गया है इस मामले में एक EditText

मैं जानता हूँ कि उपयोगकर्ता से पहले अक्षम होने सामान्य प्रतीत होता है मैं dialog.getButton(DialogInterface.BUTTON_POSITIVE) फोन करके बटन प्राप्त कर सकते हैं, लेकिन यह कॉल अशक्त वापस आ जाएगी अगर show() अभी तक कहा जाता है नहीं किया गया है।

+0

क्या आपने शो से पहले कॉल करने का प्रयास किया था? –

+0

आप 'डायलॉगफ्रेगमेंट' कक्षा का उपयोग करके एक कस्टम संवाद बनाने से बेहतर हो सकते हैं। – ElliotM

+0

यह एक संवादप्रवाह वर्ग में निहित है। – Joakim

उत्तर

12
AlertDialog.Builder builder = new AlertDialog.Builder(this); 
builder.setPositiveButton(android.R.string.ok, null); 
AlertDialog dialog = builder.create(); 
dialog.setOnShowListener(new OnShowListener() { 

    @Override 
    public void onShow(DialogInterface dialog) { 
     if(condition) 
     ((AlertDialog)dialog).getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false); 
    } 
}); 

dialog.show(); 
3

आप चेतावनी संवाद के बटन का उपयोग करने की। तो शो() कॉल करने के लिए है, बस के बाद आप पर शो() कहते हैं चेतावनी Dialog, आपको नकारात्मक बटन मिलता है और इसे इस तरह अक्षम कर दिया जाता है:

AlertDialog.Builder builder = new AlertDialog.Builder(getContext()) 
      .setTitle("Title") 
      .setMessage("Message") 
      .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 

       } 
      }) 
      .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 

       } 
      }) 
      .setIcon(android.R.drawable.ic_dialog_alert); 
    AlertDialog d = builder.show(); 
    d.getButton(AlertDialog.BUTTON_NEGATIVE).setEnabled(false); 

तो, इसका नकारात्मक बटन डिफ़ॉल्ट रूप से अक्षम हो जाता है।

संबंधित मुद्दे