2013-08-26 18 views
0

我想做一些非常簡單的事情。我有一個進度條和一個textView,我希望在點擊按鈕時動態更新,但在函數調用期間不止一次。在一個函數中更新TextView

我希望它變成'A',然後等待一秒鐘,然後切換到'B'...例如。

據我所知,我的功能阻止UI /主線程,這是如果我setText()十次,我只看到第十個文本出現時,函數完成。所以我嘗試了UI線程中的處理程序/ runnables,使invalidation(和postInvalidating)來鼓勵刷新和runOnUiThread(),並且它們都只是在它們完成運行時才更新,只留下最終狀態。

public void requestPoint(View v) { 
    textProgress.setText("Requesting A Point"); 
    waiting(200); 
    progressBar.setProgress(5); 
    textProgress.setText("Request Received!"); 
    waiting(500); 
    .... 
} 

我想我已經變成幾乎所有的類似的問題鏈接紫色,浪費了太多的時間在這個簡單的事(雖然我確實學到了很多關於線程在Android),但我覺得我必須失去了一些東西至關重要的是,這似乎並不是那麼艱難的任務。

任何幫助將不勝感激。

+0

如何在不阻塞當前線程的情況下等待()等待? –

+0

這是我的不好。等待只是浪費時間與循環 – Avarice

+0

你有沒有嘗試過使用計時器或asyncTask? – gian1200

回答

0

假設你真的只是想用你的等待方法浪費時間。這是假設一個200毫秒的延遲,然後延遲500毫秒,就像你的例子。

public void requestPoint(View v) { 
    textProgress.setText("Requesting A Point"); 
    handler.postDelayed(new Runnable(){ 
     public void run(){ 
      progressBar.setProgress(5); 
      textProgress.setText("Request Received!"); 
     } 
    }, 200); 

    handler.postDelayed(new Runnable(){ 
     public void run(){ 
      .... 
     } 
    }, 700); 
.... 
} 
+0

它的工作原理!我試圖做同樣的事情,但用可重用的runnable寫公共變量,然後將它們設置爲下一個東西,但無濟於事。 感謝您的幫助,我花了太多時間嘗試不同的東西,然後纔開始工作。 – Avarice

+0

此外,對於未來的讀者,有一個錯字: postDelayed(Runnable,int)不postDelayed(int,Runnable) – Avarice

+0

糟糕,修復它。 – Tenfour04