2011-07-04 48 views
1

我想知道如何創建一個內螺紋的一個TextView:如何在一個線程中創建一個TextView?

Thread t = new thread() { 
    public void run() { 
    for(int i = 0; i < 63; i++) { 
     TextView tv = new TextView(); 
     tv.setText("What to do"); 
    } 
    } 
} 
t.start(); 

什麼我不明白做什麼是什麼,是想成爲的TextView的構造方法裏面?

回答

3
  1. 要回答你的問題:創建一個TextView你必須用Context提供它。 ActivityApplication兩者均延伸Context,並且在需要Context時經常使用。在你的情況,你應該使用whcih創建TextView將在中給出的活動,這樣,修改代碼:

    class MyActivity extends Activity { 
        public void someMethod() { 
        Thread t = new Thread() { 
         @override public void run() { 
         for(int i = 0; i < 63; i++) { 
          TextView tv = new TextView(MyActivity.this); 
          tv.setText("What to do"); 
         } 
         } 
        }; 
        t.start(); 
        } 
    } 
    
  2. 這一點很重要,即使你並沒有問它:一個TextView是UI控件。在UI線程上創建UI控件只是合法的。在不同的線程中創建它可能會導致各種麻煩。從不同的線程這樣做的一種方法是使用Activity.runOnUiThread()方法:

    class MyActivity extends Activity { 
        public void someMethod() { 
        Thread t = new Thread() { 
         @override public void run() { 
         for(int i = 0; i < 63; i++) { 
          runOnUiThread(new Runnable() { 
          void run() { 
           TextView tv = new TextView(MyActivity.this); 
           tv.setText("What to do"); 
          } 
          }); 
         } 
         } 
        }; 
        t.start(); 
        } 
    } 
    

免責聲明:儘管我固定在上面的代碼一些錯誤,我沒有測試它。仍然可能有錯誤。

+0

thx爲答案。我會去測試它,看看它是否有效 – camelCaseD

+0

這個例子的作品 – camelCaseD

2

試試這個,

Thread t = new thread(new Runnable() 
{ 
public void run() 
{ 
    for(int i = 0; i < 63; i++) 
    { 
     runOnUiThread(new Runnable() 
     { 
     public void run() 
     { 
      TextView tv = new TextView(getApplicationContext()); 
      tv.setText("What to do"); 
     } 
     }); 
    } 
} 
}); 
t.start(); 

你必須通過Application Context創建視圖和你只能修改UI線程UI。

+0

thx爲答案 – camelCaseD

0

另外,如果您的主題不在活動分類中,因此您可以撥打runOnUiThread活動的方法,您可以使用handler。您在活動的主線程中創建一個處理程序對象,並將其作爲參數傳遞給想要的可運行對象。然後進入可運行代碼,您可以使用處理程序的post(Runnable r)方法從線程更新用戶界面,而不會出現任何問題。

相關問題