2013-05-07 3 views
7

मैं अपने संवाद को प्रदर्शित और नष्ट करने के लिए गतिविधि में showDialog और dismissDialog का उपयोग करता हूं। क्या वर्तमान में प्रदर्शित संवाद पर क्लिक कमांड जारी करने का कोई तरीका है, बिना किसी संदर्भ को संदर्भित करने के एक चर को बनाए रखा?कोड के माध्यम से अलर्टडियलॉग पर 'ओके' पर क्लिक कैसे करें?

उदाहरण के लिए, मैं कोड के माध्यम से संवाद के 'ठीक'/सकारात्मक बटन को दबा देना चाहता हूं। वैकल्पिक रूप से

AlertDialog dialog = ... 
dialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick(); 

, यदि आप संवाद के लिए एक संदर्भ नहीं रखना चाहते हैं, लेकिन:

AlertDialog.Builder alBuilder = new AlertDialog.Builder(this); 
     alBuilder 
       .setMessage("Do you wamt to exit?") 
       .setPositiveButton("Yes", 
         new DialogInterface.OnClickListener() { 

          @Override 
          public void onClick(DialogInterface dialog, 
            int which) { 
           dialog.cancel(); 
           // Write your code here for Yes 
          } 
         }) 
       .setNegativeButton("No", 
         new DialogInterface.OnClickListener() { 

          @Override 
          public void onClick(DialogInterface dialog, 
            int which) { 
           dialog.cancel(); 
           // Write your code here for No 
          } 
         }); 
     alBuilder.setCancelable(false); 
     alBuilder.show(); 
+0

क्या आप अपना संवाद सेट अप करने के लिए निर्माता का उपयोग कर रहे हैं? – TronicZomB

+0

@TronicZomB: हां, मैं 'बिल्डर' का उपयोग कर रहा हूं और मैं अपना संवाद सेट अप करने के लिए 'गतिविधि' में 'क्रिएटडिअलॉग' पर ओवरराइड कर रहा हूं। – Arci

+1

ठीक है, बेकरीऑनफायर का एक अच्छा उदाहरण है कि मैं वास्तव में उसके उत्तर को देखने से पहले पोस्ट करने जा रहा था। यह बहुत कुछ है जो आप अपने कोड को मॉडल करना चाहते हैं। – TronicZomB

उत्तर

25

मैं इस कोड का परीक्षण नहीं किया है, लेकिन यह काम करना चाहिए: -

+0

धन्यवाद, लेकिन मैं बिल्डर का उपयोग कर रहा हूं और इसमें 'GetButton' विधि नहीं है। क्या वास्तविक संवाद का संदर्भ दिए बिना 'ओके' बटन पर क्लिक करने का कोई तरीका है? – Arci

+2

यदि आप संवाद का संदर्भ रखने में सक्षम हैं, तो AlertDialog इंस्टेंस AlertDialog.Builder # show() द्वारा वापस किया जाता है। अन्यथा, क्या ऑन-क्लिक तर्क को एक अलग विधि में ले जाना संभव है? एक क्लिक अनुकरण करने के बजाय आप केवल ऑन-क्लिक कोड निष्पादित कर सकते हैं और संवाद को खारिज कर सकते हैं। –

+0

हां, यह 'अलर्टडिअलॉग' देता है लेकिन मैं 'अलर्टडिअलॉग' का संदर्भ देने वाला एक चर रखना पसंद नहीं करता हूं। क्या 'गतिविधि' का उपयोग करके संवाद तक पहुंचने का कोई तरीका है कि मेरे पास संवाद की आईडी है? – Arci

-1

इस प्रयास करें अपने सेटअप के नियंत्रण में हैं, आप क्लिक कोड को किसी अन्य विधि में निकाल सकते हैं:

AlertDialog.Builder builder = ... 
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int which) { 
    onPositiveButtonClicked(); 
    } 
}); 

और 0 लागू करें आपकी गतिविधि में। प्रोग्राम बटन पर ओके बटन पर क्लिक करने के बजाय आप onPositiveButtonClicked() और dismissDialog(id) पर कॉल कर सकते हैं। यदि आपको एकाधिक संवादों को संभालने की आवश्यकता है, तो onPositiveButtonClickedid पैरामीटर लें।

+0

धन्यवाद! लेकिन मुझे लगता है कि आपने मेरे प्रश्न को गलत समझा। – Arci

+0

क्या आप अपना कोड पोस्ट कर सकते हैं ताकि हम समझ सकें कि आप क्या चाहते हैं .. – bakriOnFire

+0

मैं 'activity.getActiveDialog (DIALOG_ID) जैसे कुछ ढूंढ रहा हूं .getButton (...)। PerformClick()'। बस 'गतिविधि.dismissDialog (DIALOG_ID)' की तरह, जिसमें आप DIALOG_ID का उपयोग कर संवाद को खारिज कर सकते हैं। – Arci

4

मैं कोड

हाँ के माध्यम से 'ठीक'/सकारात्मक संवाद का बटन दबाएँ करना चाहते हैं, तो आप इसे POSITIVE बटन का उदाहरण हो रही द्वारा कर सकते हैं और फिर उस पर performClick() कहते हैं। इसे आजमाएं:

Button okButton = alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); 
okButton.performClick(); //<<< click Button using code 
+0

धन्यवाद! लेकिन क्या होगा यदि मेरे पास 'चर' का संदर्भ नहीं है? क्या 'गतिविधि' का उपयोग करके 'पॉजिटिव' बटन तक पहुंचने का कोई तरीका है ('dismissDialog' के समान)? – Arci

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