2014-10-28 37 views
0

我需要知道如何在用的AsyncTask一個TextView:安卓的setText( 「載入中...」)裏面的AsyncTask

  • 開始:的setText( 「加載」)。
  • 1秒:setText(「Loading ..」);
  • 2秒:setText(「Loading ...」);
  • 重新啓動:setText(「Loading。」);

在doInBackground的動作的實時。由於

protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    this.requestWindowFeature(Window.FEATURE_NO_TITLE); 

    setContentView(R.layout.inicio); 

    tareaAsincInicio = new tareaAsincronaInicio(); 
    tareaAsincInicio.execute(); 
} 

private class tareaAsincronaInicio extends AsyncTask<Void, Integer, Boolean> { 

    protected void onPreExecute() { 

     ... 
    } 

    protected Boolean doInBackground(Void... params) { 

     ... 
     methods(); 
    } 

    protected void onPostExecute(Boolean result) { 

     Intent i = new Intent(Inicio.this, MainActivity.class); 
     startActivity(i); 

     finish(); 
    } 

    protected void onProgressUpdate(Integer... values) { 

     ... 
    } 
} 

回答

0

你可以用一個處理程序做到這一點,你開始onPreExecute()

string text = "Loading." 
boolean async = true; 
handler=new Handler(); 

    final Runnable r = new Runnable() 
    { 
     public void run() 
     { 
      if(text.contains("...")) 
       text = "Loading." else 
         text = text+"."; 
      tv.setText(text); 
      if(async) 
      handler.postDelayed(this, 1000); 
     } 
    }; 

    handler.postDelayed(r, 1000); 

這樣做是調用運行的每一秒鐘改變文本。當您達到onPostExecute()時,您將async值更改爲false,並停止可運行。

0

讓你的doInBackground調用publishProgress()並將它傳遞給你想要顯示的文本。然後在onProgressUpdate()設置你的文字視圖。

new AsyncTask<Void, String, Void>(){ 
 

 
      @Override 
 
      protected Void doInBackground(Void... params) { 
 
       publishProgress("updated text"); 
 
       return null; 
 
      } 
 

 
      @Override 
 
      protected void onProgressUpdate(String... values) { 
 
       textView.setText(values[0]); 
 
      } 
 
     };

0

您可以創建一個處理程序的屬性,然後在啓動前執行和Runnable接口更改對話框的標題