2010-11-17 10 views
10

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

ProgressDialog dialog = ProgressDialog.show(this, "", "Detecting...", 
      true); 
    dialog.show(); 

    dialog.dismiss(); 

लेकिन मैं शो के बीच क्या डालूं, और कुछ सेकंड के लिए संवाद होने के लिए बर्खास्तगी क्या है? धन्यवाद!

उत्तर

48

सही तरीका है - यह अपने मुख्य ब्लॉक नहीं करता धागा, इसलिए यूआई उत्तरदायी रहता है:

dialog.show(); 

Handler handler = new Handler(); 
handler.postDelayed(new Runnable() { 
    public void run() { 
     dialog.dismiss(); 
    } 
}, 3000); // 3000 milliseconds delay 
+0

महान जवाब केवल आपके अंतिम पंक्ति से पहले एक अतिरिक्त घुंघराले ब्रेस याद कर रहे हैं: }} , 3000); // 3000 मिलीसेकंड – DEzra

+0

क्षमा करें! प्रतीक्षा करते समय प्रगति संवाद पर हम अपना संदेश कैसे अपडेट कर सकते हैं। उदाहरण के लिए: 5 सेकंड ... 4 सेकंड ... 3 सेकंड ... 2 सेकंड ... 1 सेकंड ... बुकम! और –

0

बर्खास्तगी और शो के बीच कुछ भी नहीं आता .. आपके आधार पर समय। उदाहरण के लिए संवाद सर्वर का उपयोग से पहले दिखाई जाएगी और यह हो रही परिणाम का मतलब है

dialog.show(); 
ServerCall(); 
dialog.close(); 

आप खाली देरी की जरूरत है तो उस के बीच CountDownTimer कॉल का उपयोग करने का मतलब खारिज करेगा ..

2
 progress.setProgress(100); 
     Handler handler = new Handler(); 
     handler.postDelayed(new Runnable() { 
      public void run() { 
       pdialog.dismiss(); 
      }}, 3000); 
1

आप Android के CountDownTimer जो अधिक कुशल है उपयोग कर सकते हैं की तुलना में किसी अन्य समाधान तैनात और मैं टी भी पर onTick() विधि के माध्यम से आग का समर्थन करता है।

इस उदाहरण पर एक नज़र, है

new CountDownTimer(3000, 1000) { 

    public void onTick(long millisUntilFinished) { 
      // You don't need anything here 
    } 

    public void onFinish() { 
     dialog.dismiss(); 
    } 
    }.start(); 
+0

को खारिज कर दें यह वही है जो मुझे चाहिए, हनल्डर फ़ंक्शन लीनबैक में उपयोग नहीं कर सकता: डी –

1

आप कुछ इस तरह कर सकते हैं:,

new AsyncTask<Void, Void, Void> 
{ 
    ProgressDialog dialog = new ProgressDialog(MainActivity.this); 
    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 

     dialog.setTitle("Please wait"); 
     dialog.setMessage("Preparing resources..."); 
     dialog.setCancelable(false); 
     dialog.show(); 
    } 


    @Override 
    protected Void doInBackground(Void... params) { 
     try{ 
      Thread.sleep(3000); 
     } 
     catch(Exception e) 
     { 
      e.printStackTrace(); 
     } 
    } 

    @Override 
    protected void onPostExecute(Void aVoid) 
    { 
     super.onPostExecute(aVoid); 
     if (dialog!=null && dialog.isShowing()) 
     { 
      dialog.dismiss(); 
     } 
    } 
}.execute(); 
संबंधित मुद्दे