2011-02-02 28 views
4

我想在我的活動A開始另一個活動B時顯示PD。但是在那個onclick方法中,我的A活動在開始B之前必須做一些工作,而且B還需要做一些工作,因爲它必須加載很多的用戶界面數據。如何在從活動更改爲另一活動時顯示ProgressDialog?

我需要被用戶觀看從活性的起了變化的加載數據的全部過程B.

一個PD¿怎麼能做到呢?

我tryed上MyApplication.java存儲靜態ProgressDialog,並用這些方法:

public static void showProgressDialog(Context c) { 
    pd = ProgressDialog.show(c, c.getResources().getString(R.string.app_name), 
     c.getResources().getString(R.string.loading), true, false);  
} 
public static void dismissProgressDialog(){ 
    pd.dismiss(); 
} 

,但它不工作,它沒有顯示什麼,我不知道爲什麼

如何通過簡單的方法實現這一點? 我知道我可以用異步任務做,但就是太難受,我無法理解的代碼示例我是這個網絡上尋找和谷歌

代碼示例,歡迎

感謝

+0

`我知道我可以用異步任務完成它,但這對我來說太難了`我很抱歉,但這是實現它的方式。 – Falmarri 2011-02-02 19:06:03

+0

你能給我簡單的代碼示例嗎? – NullPointerException 2011-02-02 19:29:43

回答

3

好吧,我同意@Falmarri評論,簡單的方法是用AsyncTask實現。因爲AsyncTask管理UIThread和後臺線程。

我總是這樣做與AsyncTask,但我不認爲粘貼在這裏我的代碼會幫助你,因爲你的要求可能不是我的,但我認爲你可以這樣做;

子類AsyncTask並覆蓋這些方法;

  • onPreExecute()......因爲這個 方法是在UI線程調用 您可以創建和顯示進度 對話框。
  • doInBackground(Runnable任務)...... 這個方法在後臺線程 跑這麼你沒有必要擔心 有關線程處理......所有你 要做的就是努力工作
    (進程數據,下載數據等)
    併發布任何更新到您想要的 的用戶界面。

  • onProgressUpdate(對象...值)... 這種方法也被稱爲在UI 線程,因此您可以更新
    進步與進步
    值對話框。

  • onPostExecute(對象結果)...... 這種方法在UI線程 這樣運行,則可以顯示操作
    結果並關閉進度
    對話框,並調用你的新的活動。

,你可以在這裏做所有的操作,在活性的運行和活動B操作,並且AsynTask會爲您管理線程管理:)

編輯1:

我不不知道你的設計有多複雜,但是在這裏我做了一個項目的例子,也許它不是你想要的,但它有所有的東西在這裏描述,在我的答案中,也許就像一個例子。 PS:因爲我不知道你把這個項目我上載這裏的項目:http://www.megaupload.com/?d=FWIJ3575

我在這裏貼上我的AsyncTask代碼:http://pastebin.com/qsSGCpat,但我不認爲它幫助你,因爲我用做很多事情,非常通用的,但也許你想看看

我建議你閱讀更多關於這個類,因爲是最重要的一個,在這裏你可以閱讀更多關於這種機制... http://android-developers.blogspot.com/2009/05/painless-threading.html

1

可以添加程序欄到您的佈局:

<FrameLayout 
    android:id="@+id/mapLayout" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" > 
     //your layout 
    </LinearLayout> 

    <ProgressBar 
     android:id="@+id/progressBar" 
     style="?android:attr/progressBarStyleLarge" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" > 
    </ProgressBar> 

</FrameLayout> 

負載在活動的onCreate進度條:

public void onCreate(final Bundle savedInstanceState) { 

    mProgress = (ProgressBar) findViewById(R.id.progressBar); 
    mProgress.setVisibility(View.VISIBLE); 

    //rest your code  
} 

停止進度條,當你的活動開始:

@Override 
protected void onStart() { 

    //your code 
    mProgress.setVisibility(View.GONE);   
    super.onStart(); 
} 
0
  1. 爲一路裝載/進步創建單一實例-對話。
  2. 使用ApplicationContext以ProgressViews /對話框
  3. 管理從靜態函數入店troughout應用

這些可能是3種方式這樣做。

相關問題