2011-02-02 105 views
0

在我的主要佈局XML我:如何在線程中設置Android中按鈕上的文本?

<LinearLayout android:id="@+id/LinearLayout01" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"> 

<LinearLayout android:orientation="vertical" android:gravity="center_horizontal" android:layout_width="wrap_content" android:layout_height="match_parent" android:id="@+id/LinearLayout02"> 

<Chronometer android:text="@+id/Chronometer01" android:id="@+id/Chronometer01" android:layout_width="wrap_content" android:layout_height="wrap_content"></Chronometer> 


<Button android:text="@string/hints" android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/Button01"></Button> 

</LinearLayout> 
<com.touchpanel.Panel android:id="@+id/SurfaceView01" android:layout_width="wrap_content" android:layout_height="wrap_content"> 
</com.touchpanel.Panel> 

</LinearLayout> 

在我的面板類,我產生一個線程來進行繪製本身。我的問題是,我可以訪問其他線性佈局中的按鈕來更改文本嗎? (這會發生很多,文字是動態的)

我嘗試在使用此佈局的活動中聲明按鈕,但我無法從Panel類訪問它。我可以編寫一個將文本作爲參數放入按鈕的函數,但如果從Panel類調用該函數,它將強制關閉。如果我註釋掉「button1.setText(」Text「);」行,它處理函數調用罰款。

試圖宣佈在面板類的按鈕,如:

private Button b1; //Declared at the beginning of the class 

//in constructor of Panel class: 
b1 = (Button)findViewById(R.id.Button01); 
b1.setText("Hello"); 

它聲明的按鈕,並設置它的罰款。但是當我嘗試使用「b1.setText」這一行時,它強制關閉。

有什麼建議嗎?

+0

您可能想在這裏問這個問題:http://android.stackexchange.com/它是一個StackExchange社區,像StackOverflow,致力於Android的問題。 – Josh 2011-02-02 21:28:45

+5

@Josh:Android SE上的開發問題[顯式偏離主題](http://android.stackexchange.com/faq)。他們應該在這裏張貼,就像OP所做的一樣。 Android SE適用於Android設備的**用戶**,而不是開發人員。 – eldarerathis 2011-02-02 21:30:37

回答

4

您無法從非UI線程修改UI。使用Handler。或者,撥打Button致電post()。或者,使用runOnUiThread()。或者,轉儲線程並使用AsyncTask

相關問題