2011-02-01 79 views
2

我有一個按鈕,onclick讀取並向用戶顯示rss消息列表。我想添加一個進度條,直到完成加載。我的問題是,如果我添加一個欄,它會在第一時間正常工作,但如果按下後退按鈕,欄會再次啓動,並且無法停止。任何幫助或教程演示進度條將不勝感激。謝謝!進度條問題

ProgressBar myProgressBar; 
    int myProgress = 0; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 
    setContentView(R.layout.main1); 

    Button nea = (Button) findViewById(R.id.nea); 
    nea.setOnClickListener(new View.OnClickListener() { 
    public void onClick (View view) { 
    setContentView(R.layout.bar); 

    myProgressBar=(ProgressBar)findViewById(R.id.bar); 

      new Thread(myThread).start(); 

    Intent myIntent = new Intent(view.getContext(), nea.class); 
    startActivityForResult(myIntent, 0); 
    } 
    }); 
} 

private Runnable myThread = new Runnable(){  
    @Override 
    public void run() { 
    // TODO Auto-generated method stub 
    while (myProgress<100){ 
     try{ 
     myHandle.sendMessage(myHandle.obtainMessage()); 
     Thread.sleep(1000); 
     } 
     catch(Throwable t){ 
     } 
    } 
    } 

    Handler myHandle = new Handler(){ 

    public void handleMessage(Message msg) { 
     // TODO Auto-generated method stub 
     myProgress++; 
     myProgressBar.setProgress(myProgress); 
    } 
    }; 
     }; 
+1

表現出一定的代碼請,很難說smthing離不開它。 – 2011-02-01 14:16:36

+0

當數據編碼完成時刪除進度條 – 2011-02-01 14:32:31

+0

您試圖使用進度條來處理什麼?您目前的實施似乎沒有任何效果。 – 2011-02-01 14:50:13

回答

1

其實我有AsyncTask,在那裏你在onPreExecute()啓動進度條實現這一點,在onPostExecute()取消它,做下載的doInBackground()。如果你想更新進度值,可以publishProgress()doInBackground()然後可以在進度條中onProgressUpdate()

https://github.com/pilhuhn/ZwitscherA/blob/master/src/de/bsd/zwitscher/TweetListActivity.java#L328 更新顯示,使用這些方法和顯示/一的AsyncTask的一個例子,如何隱藏一個進度條( pg變量)

1

問題是,您不能恢復myProgress變量。將其設置爲0的onCreate()的開頭:

@Override 
public void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 
    setContentView(R.layout.main1); 
    myProgress = 0; // <--- notice that statement. 
    ... 
} 

另外,我建議你使用AsyncTask任何背景的工作。見示例here

0

您的代碼看起來並不像您希望的那樣工作。你想在這個活動和下一個(我的假設)之間顯示一個進度條。根據您的代碼現在的工作情況,它看起來好像當前活動將啓動一個線程,該線程將顯示大約100秒的進度條,但同時您正在加載第二個活動。所以如果在100秒之前,如果你點擊後退按鈕,你將回到原來的活動,它仍然顯示進度條。

一般來說,我不認爲你需要一個活動之間的進度條,雖然,因爲他們應該很順利地交換它們。我通常會使用進度條在活動完全呈現之前加載數據。

也許你應該在一些對進度的Android的文件來看看:

http://developer.android.com/reference/android/widget/ProgressBar.html

http://developer.android.com/reference/android/app/ProgressDialog.html

http://developer.android.com/guide/topics/ui/dialogs.html