2011-02-02 11 views
0

は私が持っている私のメインのレイアウトXMLでは:私のPanelクラスで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 ");"それは、関数呼び出しをうまく処理します。などPanelクラスでボタンを宣言しようと

、:

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/ StackOverflowのようなStackExchangeコミュニティで、Androidの質問に専念しています。 – Josh

+5

@ Josh:開発に関する質問はAndroid SEの[明示的にオフトピック](http://android.stackexchange.com/faq)です。 OPが行ったように、ここに投稿する必要があります。 Android SEは、開発者ではなく、Android搭載端末の**ユーザー**向けです。 – eldarerathis

+0

強制終了の場合、logcatからスタックトレースを提供できますか? –

答えて

4

UIを非UIスレッドから変更することはできません。 Handlerを使用してください。または、Buttonpost()と電話してください。または、runOnUiThread()を使用します。または、スレッドをダンプし、AsyncTaskを使用します。

+0

"UI以外のスレッドからUIを変更することはできません"となりました。私はそれがもっと簡単になるので、それが本当ではないことを望んでいた。ありがとう – Robert

関連する問題