2013-02-25 33 views
0

我想在textView中一次打印一個單詞,然後使用睡眠,然後使用下一個單詞。 但它int'n工作..需要幫助。Android線程和getText()裏面for循環不工作?

String s = MainActivity.check;// String check defined in mainactivity this is second 
    String[] words = s.split(" "); 
    EditText et = (EditText) findViewById(R.id.editText2); 

    for(int i=0;i<words.length; i++){ 
     et.setText(words[i]); 
     Thread.sleep(1000); 
    } 

上面的輸出只硬道理中的TextView

+0

你有什麼錯誤? – 2013-02-25 08:20:44

回答

1

要設置在每次迭代日文本新。嘗試et.setText(et.getText()+ words [i]); 這需要已經在TextView中的文本然後追加新的單詞。

+0

問'我'是最終的,因此打印只有一個字 – lavin 2013-02-25 09:07:24

0

嘗試使用替代的處理程序:

for(int i=0;i<words.length; i++){ 
    final int j = i; 
    String text = words[j]; 
    new Handler().postDelayed(new Runnable() { 
     public void run() { 
      et.setText(text); 
     } 
    }, 1000); 
} 
+0

更新了答案 – Nermeen 2013-02-25 08:51:18

+0

同樣problem.asks文本是最終的,因此打印單詞的最後一個單詞[] – lavin 2013-02-25 09:11:01

0

在Android應用程序的任何更新的用戶界面必須在UI線程中發生。如果您生成一個線程在後臺執行工作,則必須在觸摸View之前將結果編組回UI界面。

必須使用Handler類這樣做......

public EditText et; 
Handler handler; 
oncreate(..) { 
    setContentView(R.layout.main); 
    et = new EditText(context); 
    Thread t =new Thread(){ 
     public void run() { 
      handler.post(new Runnable() { 
       public void run() { 
        et.setText("test"); 
       } 
      }); 
     } 
    }}; 
    t.start(); 
} 
+0

這不是打印存儲在單詞[]中的所有單詞只有「測試」。 – lavin 2013-02-25 09:05:08

0

好吧,這裏是你的答案:

int i = 0; 
Handler handler = new Handler(); 

     handler.postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       textView.setText(""+i); 
       i++; 
       handler.postDelayed(this, 1000); 
      } 
     }, 1000);