2015-12-12 146 views
0

我想創建一個類似的「欄進度」,但帶有文本。我想這樣做,但不行。更改TextView兩次

public void changeTextTwice(View v) throws InterruptedException { 

    miEdad.setText("example 1"); 
    Thread.sleep(2000); 

    miEdad.setText("example 2"); 

} 

只顯示最後一個setText。我該怎麼做?

謝謝^^

回答

0

可以使用android.os.Handler與延遲執行作業。

public void changeTextTwice(View v){ 

    miEdad.setText("example 1"); 

    new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 

      runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
        miEdad.setText("example 2"); 
       } 
      }); 

     } 
    },2000); 
} 

否則,如果你想要做的事的下載等,你可以使用的AsyncTask這樣

private class DownloadAsync extends AsyncTask<Void, Void, Void>{ 
     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 

      miEdad.setText("example 1"); 
     } 


     @Override 
     protected Void doInBackground(Void... params) { 
      // do your job here 

      return null; 
     } 

     @Override 
     protected void onPostExecute(Void aVoid) { 
      super.onPostExecute(aVoid); 

      miEdad.setText("example 2"); 
     } 
    } 

,並調用它在你的方法是這樣

new DownloadAsync().execute();

注意,如果你想調用UI方法,如setText()等在doInBackground()你必須使用runOnUiThread(new Runnable)像這樣

 runOnUiThread(new Runnable() { 
      @Override 
      public void run() { 
       // call ui methods here 
      } 
     }); 
+0

必須呼籲runOnUiThread –

+0

的方法,你可以幫我嗎? ^^ –

+0

你想要什麼? –

0

非常感謝你@vspallas,但run()方法可以使用條件嗎?因爲你嘗試類似的東西而不工作。裏面的run()我稱之爲「pensar()」,有這個

public void responde() { 

    if (respuestasPersonalizas = false) { 



     if (sino == 1) { 
      respuesta.setText(R.string.yes); 
     } else if (sino == 2) { 
      respuesta.setText(R.string.no); 
     } else { 
      respuesta.setText(R.string.dontknow); 
     } 

      sino = 0; 
     } 
    } 
+0

你可以發佈日誌嗎? –

+0

當然,我把波紋管^^ –

+0

但該應用程序不接近,只是不工作:/ –