2010-11-27 14 views
8

मैं एक Android ऐप्लिकेशन विकसित करने की है।एंड्रॉयड चेतावनी संवाद - ठीक बटन को छिपाने के लिए कैसे के बाद यह दबाया जा रहा

मैं ठीक बटन को छिपाने के लिए उपयोगकर्ता यह प्रेस के बाद, के रूप में संवाद खिड़की एक अभिकलन जगह लेता है, जबकि कुछ सेकंड के लिए अग्रभूमि पर बनी रहेगी चाहते हैं।

इस कोड है:

new AlertDialog.Builder(this) 
    .setMessage("This may take a while") 
    .setPositiveButton("OK", new android.content.DialogInterface.OnClickListener() {     
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
         // hide the OK button - how? 
         // a lot of computation 
     } 
    }) 
    .show(); 

मैं ऐसा कैसे हासिल कर सकते हैं?

पी.एस .: मैं और अधिक उन्नत तकनीकों एक अभिकलन को संभालने के लिए के लिए दिलचस्प नहीं कर रहा हूँ (जैसे: संवाद प्रगति, बहु सूत्रण)।

धन्यवाद।

+6

यदि आप यूआई थ्रेड पर लंबे समय से चलने वाले गणना करने का इरादा रखते हैं, तो अपने ऐप को एप्लिकेशन को ट्रिगर करने पर त्रुटियों का जवाब न देने पर आपके उपयोगकर्ताओं को बहुत नकारात्मक प्रतिक्रिया मिलती है। – adamp

+1

को रोकने के लिए "आवेदन जवाब नहीं" त्रुटियों, आप एक [ 'AsyncTask'] (http://developer.android.com/reference/android/os/AsyncTask.html) में गणना चलाने चाहिए। – sulai

उत्तर

19
.setPositiveButton("OK", new android.content.DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     ((AlertDialog)dialog).getButton(which).setVisibility(View.INVISIBLE); 
     // the rest of your stuff 
    } 
}) 
+2

हालांकि ऐसा लगता है कि आपका डिज़ाइन इस भाग में सही नहीं है। शायद 'प्रोग्रेसडियलॉग' के साथ 'AsyncTask' का उपयोग करना बेहतर होगा। AsyncTask पृष्ठभूमि थ्रेड पर लंबी गणना चलाने की अनुमति देता है ताकि आपका मुख्य UI थ्रेड अवरुद्ध न हो और इस प्रकार ऐप को एएनआर नहीं मिलेगा। –

+0

वहाँ बटन को निष्क्रिय करने के लिए एक तरह से संवाद पट्टी पर किसी पाठ फ़ील्ड पर निर्भर है? – akd

+0

@akdurmus: मेरा मानना ​​है कि एक रास्ता होना चाहिए, हालांकि कृपया इस पर एक नया प्रश्न पूछें। –

-3

आप अदृश्य करने के लिए बटन की दृश्यता सेट कर सकते हैं।

ok.setVisibility(View.INVISIBLE); 
+4

लेकिन मैं 'ठीक' चर कैसे प्राप्त कर सकता हूं? – dan

0
setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int id) { 
     dialog.dismiss(); 

जहां dialogDialogInterface है।

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