2010-01-26 15 views

उत्तर

45

आप उपयोग कर सकते हैं एक ProgressDialog:

ProgressDialog dialog = new ProgressDialog(this); 
dialog.setMessage("Thinking..."); 
dialog.setIndeterminate(true); 
dialog.setCancelable(false); 
dialog.show(); 

ऊपर कोड अपने Activity के शीर्ष पर निम्न संवाद दिखाएगा:

alt text

वैकल्पिक रूप से (या अतिरिक्त) यदि आप एक प्रगति प्रदर्शित कर सकते हैं आपके Activity के शीर्षक पट्टी में सूचक।

alt text

आप नीचे दिए गए कोड का उपयोग कर अपने Activity की onCreate() विधि के शीर्ष के निकट need to request this as a feature:

requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); 

तो यह इस तरह मोड़ पर:

setProgressBarIndeterminateVisibility(true); 

और इसे चालू इस तरह से:

setProgressBarIndeterminateVisibility(false); 
+0

समस्या यह है कि संवाद बॉक्स प्रदर्शित करने के बाद मैं एक अपेक्षाकृत लंबे उपचार जो संवाद बॉक्स के प्रदर्शन कि के अंत में दिखाई रोकता भाग गया है उपचार जब मुझे अब जरूरत नहीं है! – Arutha

+1

'AsyncTask' पर एक नज़र डालें। आप 'ProgressDialog' को 'onPreExecute()' और 'onPostExecute' में प्रदर्शित और छुपाएं और' doInBackground' में अपना काम करें। http://android-developers.blogspot.com/2009/05/painless-threading.html –

+0

एंड्रॉइड डेवलपर गाइड "उत्तरदायित्व के लिए डिजाइनिंग" पढ़ने के लायक भी हो सकता है http://developer.android.com/guide/practices/ डिजाइन/responsiveness.html –

3

यहाँ AsyncTask का उपयोग कर इसे करने का एक सरल उदाहरण है:

public class MyActivity extends Activity { 

    protected void onCreate(Bundle savedInstanceState) { 

     ... 

     new MyLoadTask(this).execute(); //If you have parameters you can pass them inside execute method 

    } 

    private class MyLoadTask extends AsyncTask <Object,Void,String>{   

     private ProgressDialog dialog; 

     public MyLoadTask(MyActivity act) { 
      dialog = new ProgressDialog(act); 
     }  

     protected void onPreExecute() { 
      dialog.setMessage("Loading..."); 
      dialog.show(); 
     }  

     @Override 
     protected String doInBackground(Object... params) {   
      //Perform your task here.... 
      //Return value ... you can return any Object, I used String in this case 

      try { 
       Thread.sleep(6000); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
      return(new String("test")); 
     } 

     @Override 
     protected void onPostExecute(String str) {   
      //Update your UI here.... Get value from doInBackground .... 
      if (dialog.isShowing()) { 
       dialog.dismiss(); 
      }   
     } 
    } 
संबंधित मुद्दे