0

現在のxmlim表示内でテキストビューを値(タイマー)に更新しようとしています。タイマーのJavaはglrendererクラスの一部であり、テキストビューを更新できないことを除いて、すべて正常に動作します。すでに拡張しています。このようなクラスへのアクティビティ:

class MyGLRenderer extends Activity implements GLSurfaceView.Renderer {

これをタイマーループ内で使用できるようにするには、次のようにします。

TextView view = (TextView) findViewById(R.id.timetextview);
view.setText(String.valueOf(globals.gametime));

viewtimeオブジェクトを作成しようとするとクラッシュします。

部分的に取得する方法が1つあります。タイマー値はグローバルな値なので、main.javaに次のようにボタンを作成して表示できます。

public void buttonExample (View v) 
{
    TextView view = (TextView) findViewById(R.id.timetextview);
    view.setText(String.valueOf(globals.gametime));
}

しかし、これでは実際のタイマーで更新されないため、コードの上位2ブロックを使用しているときにクラッシュする理由がわかりませんが、正常にコンパイルされます。

4

2 に答える 2

0

タイマーでuithreadにアクセスするために提供されたコードGauravを使用すると、完全に機能しました。これが私が使用したものです。

public Timer timer = new Timer();


timer.schedule(new TimerTask()
{
    @Override
    public void run()
    {
         runOnUiThread(new Runnable() {
          public void run() {
               TextView view = (TextView) findViewById(R.id.timetextview);
               view.setText(String.valueOf(globals.GameTime));
                }
          });
      }
}, 250, 250);
于 2013-01-22T17:20:07.407 に答える
0

タイマー スレッドで Textview を更新しているとは思えません。

タイマースレッドでこれを試すことができます-

 runOnUiThread(new Runnable() {
           public void run() {
            view.setText(String.valueOf(globals.gametime));
           }
        });
于 2013-01-22T05:29:42.493 に答える