2013-07-10 43 views
-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(6216): android.app.SuperNotCalledException:活动 {yens.alisa.menu/yens.alisa.menu.StartGameActivity}没有调用 通过超。 onStart()

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

+0

您是否添加了onStart()? –

+0

Stacktrace显然与问题没有关系:(因为我没有阅读明确的错误信息downvoted – C4stor

+0

@ C4stor,这只是显示的错误日志,你可能想要一个截图作为证据吗? –

回答

1

鉴于堆栈跟踪,可能会导致它是BaseActivity已经不叫super.onCreate()

0

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

虽然这可能不是问题。请检查BaseActivity,如@blackbelt建议。

0

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

你的情况,并在AsyntaskdoInBackground可以use--

txtCustomerCount.post(new Runnable() { 

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

但是你的错误日志是不相关的问题。

相关问题