2011-04-01 107 views
3

在android應用程序中,當第二個活動從第一個活動被調用時,我想在兩個活動之間放置進度條,以便應用程序看起來處於運行狀態,並且我認爲這樣做已完成通過線程,幫助我,如果有人知道這一點..我想在兩個活動之間添加進度條

在此先感謝。

+1

第二次活動,你究竟在做什麼?更具描述性,這是一個發燒友程序員的網站,而不是「短信」呃,所以不要寫短信的話,比如「ne1」 – 2011-04-01 05:26:45

+0

Acctully我想在兩個活動之間放置一個進度條,第一個活動數據從數據庫在第二個活動中顯示了選定數據的更多細節。主要是兩件事之間的進度條,以便用戶不覺得該應用程序已被絞死... – Bhavin2887 2011-04-01 06:00:11

+0

看到我的答案,它將完全適合您的要求。請通過答案並嘗試實施它。 – 2011-04-01 06:52:52

回答

4

卡爾蒂克是正確的,但讓我增加更多的顯示進度的活動中。

由於您希望在後臺顯示進度條並獲取數據,您應該在第二個活動中實現AsyncTask。

下面是一個例子:

private class performBackgroundTask extends AsyncTask <Void, Void, Void> 
     { 
       private ProgressDialog Dialog = new ProgressDialog(ClassName.this); 

       protected void onPreExecute() 
       { 
        Dialog.setMessage("Please wait..."); 
        Dialog.show(); 
       } 

       protected void onPostExecute(Void unused)  
       { 
        try 
        { 
         if(Dialog.isShowing()) 
         { 
          Dialog.dismiss(); 
         } 
           // do your Display and data setting operation here 
        } 
        catch(Exception e) 
        { 

        } 

      @Override 
     protected Void doInBackground(Void... params) 
      { 
      // Do your background data fetching here 
       return null; 
     } 
     } 

加入這個performBackgroundTask類之後,你需要調用​​爲同一每當你想執行。

+0

這聽起來很愚蠢,但因爲我是android新手,感謝這個答案,我現在明白了AsyncTask!謝謝! – 2012-06-14 09:46:09

+0

@ValentinoRu很高興我的回答對你有幫助。乾杯....無論如何,這是超過一年前回答:) – 2012-06-14 09:47:12

1

在android中,只有主線程(也稱爲UI線程)才能進行UI操作。所以,你不能從新線程顯示進度條。 我認爲你的問題的解決方案可能會顯示你的第二個活動(可能是空的),從onCreate()顯示進度對話框,然後在活動中做任何繁重的工作。 希望這有助於。

1

只需在進行計算的活動中製作ProgressDialog即可。

ProgressDialog progressDialog = ProgressDialog.show(context, title, text); 

,當你的任務完成後關閉它

if(progressDialog != null && progressDialog.isShowing()) 
     progressDialog.dismiss(); 

但一定要表現出和罷免從UI線程對話。 AsyncTask可能是這種情況下的最佳溶劑

3

您必須使用AsyncTask或Thread來獲取所選數據的詳細信息。通過使用這個就可以解決你的兩個活動之間顯示進度的問題..

的AsyncTask基本的例子:AsyncTask

private class LongOperation extends AsyncTask<String, Void, String> { 

@Override 
protected String doInBackground(String... params) { 
    // perform long running operation operation 
    return null; 
} 

/* (non-Javadoc) 
* @see android.os.AsyncTask#onPostExecute(java.lang.Object) 
*/ 
@Override 
protected void onPostExecute(String result) { 
    // execution of result of Long time consuming operation 
} 

/* (non-Javadoc) 
* @see android.os.AsyncTask#onPreExecute() 
*/ 
@Override 
protected void onPreExecute() { 
// Things to be done before execution of long running operation. For example showing ProgessDialog 
} 

/* (non-Javadoc) 
* @see android.os.AsyncTask#onProgressUpdate(Progress[]) 
*/ 
@Override 
protected void onProgressUpdate(Void... values) { 
    // Things to be done while execution of long running operation is in progress. For example updating ProgessDialog 
} 
}