-2

我在下面有以下代码

public class StartGameActivity extends BaseActivity {
   public TextView txtCustomerCount;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.start_game);
        this.txtCustomerCount = (TextView) findViewById(R.id.txtCustomerCount);
        testThread();
    }

    public void testThread(){       
         Runnable runnable = new Runnable() {
              @Override
              public void run() {
                  int count = 0;
                  boolean stop = false;
                  while(!stop){
                      txtCustomerCount.setText(Integer.toString(count));
                      fakework(2000);
                      count++;
                      if(count > 99){
                          stop = true;
                      }
                  }
              }
         };
         new Thread(runnable).start();
    }

    public void fakework(int lasts){
        try {
           Thread.sleep(lasts);
    } catch (InterruptedException e) {
           e.printStackTrace();
    }
}
}

现在我想要的是在onCreate()执行时启动线程,但上面的代码返回这样的错误

07-10 17:20:20.046: E/AndroidRuntime(6247): android.app.SuperNotCalledException: Activity {yens.alisa.menu/yens.alisa.menu.StartGameActivity} 没有调用到 super.onStart()

我哪里出错了?如果您可以进一步解释,因为我刚刚开始学习android。谢谢你。

4

3 回答 3

1

鉴于堆栈跟踪,唯一可能导致它的是BaseActivity尚未调用super.onCreate()

于 2013-07-10T09:24:21.577 回答
0

从主线程以外的线程更新用户界面元素违反了 Android 开发的关键规则。因此,为了更新用户界面,有必要为线程实现 Handler 或使用 AsyncTask。

虽然这可能不是问题。像@blackbelt 建议的那样检查 BaseActivity。

于 2013-07-10T09:46:39.230 回答
0

您不能直接从后台线程访问视图元素。此外,如果您AsynTask在程序中使用,则只有OnpreExecuteOnPostExecute方法才能直接访问视图元素,因为它们在 UI 线程上运行。该doInBackground方法在单独的线程上运行。

在你的情况下,doInBackgroundAsyntask 可以使用——

txtCustomerCount.post(new Runnable() {

                        @Override
                        public void run() {
                            txtCustomerCount.setText(Integer.toString(count));                          
                        }
                    });

但是,您的错误日志与问题无关。

于 2013-07-10T09:56:11.200 回答