1

私は現在Android用のゲームを開発しています。クラスgameViewにテキストビューを追加したいと思います。これは私のコードです:

クラスmain.xml:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<app.com.GameView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/game_view"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" />
<TextView 
        android:id = "@+id/score_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="0"
        android:paddingLeft="15dp"
        />
</FrameLayout>

これはクラスアクティビティです:

public class GameActivity extends Activity {

/** Called when the activity is first created. */
private app.com.GameView gameView ;
private TextView scoreText;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    gameView = (app.com.GameView)findViewById(R.id.game_view);
    scoreText = (TextView)findViewById(R.id.score_text);
    gameView.setScoreText(scoreText);
}

これはcalssGameViewです:

private int score = 0;

 private TextView scoreText;

public void setscoreText(TextView tv){

this.scoreText = tv;
}

しかし、scoreText.setText( "" + score)を使用すると、エラー例外「CalledFromWrongThreadException:ビュー階層を作成した元のスレッドのみがそのビューにアクセスできます。」でした。私を助けてください?

4

2 に答える 2

1

整数を使用してテキストを設定することはできません。

最初に文字列に変換する必要があります。最も簡単な方法は次のとおりです。

scoreText.setText(score + "");

また

scoreText.setText(Integer.toString(score));
于 2012-08-16T08:26:31.603 に答える
1

これを試してください:scoreText.setText(String.valueOf(score));

編集 :

UIとやり取りするには、送信メッセージにHandlerクラスを使用する必要があると思います。ゲームである LunarLander という名前の Android SDK のサンプルにも素晴らしい例があります。

お役に立てば幸いです。

于 2012-08-16T08:20:56.880 に答える