0

我正在尝试将 textview 更新为当前 xml im 查看中的值(计时器),计时器的 java 是 glrenderer 类的一部分,一切正常,除了我无法更新我的 textview,我已经扩展像这样的班级活动:

class MyGLRenderer extends Activity implements GLSurfaceView.Renderer {

这样我就可以在计时器循环中使用它:

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

它在尝试创建 viewtime 对象时崩溃。

有一种方法可以让它部分显示,Timer 值是一个全局值,所以我可以通过在 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

我怀疑,您正在更新计时器线程中的 Textview。

您可以在计时器线程中尝试此操作 -

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

使用 Gaurav 提供的代码在我的计时器中访问 uithread 工作得很好,这就是我使用的

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 回答