我试图做一个简单的小程序,每秒会增加一个数字。在这种情况下,我正在实现一个应该每秒循环一次的线程,并在每次循环时将“土豆”加1。这工作正常,直到它回到显示方法potatoDisp()。出于某种原因,这会导致我的应用程序崩溃。从run()中删除potatoDisp()可以解决问题,但显示不会随着“马铃薯”的增加而更新。在run()中,如何在没有我的应用程序崩溃的情况下调用方法(Java/Android)?
public int potato = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
potatoDisp();
start();
}
public void potatoDisp() {
TextView text = (TextView) findViewById(R.id.textView1);
text.setText("You currently have " + potato + " potatoes");
}
public void start() {
Thread thread = new Thread(this);
thread.start();
}
@Override
public void run() {
while (true) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
return;
}
potato++;
potatoDisp();
}
}
我这样做的Android应用程序,如果有帮助。我尝试过寻找答案,但是当谈到正确的工作线程方式时,我很迷茫。
哦,那些土豆!从崩溃中发布你的logcat。 – codeMagic
你为什么重写主要活动中的运行方法?你有没有尝试在单独的线程中运行你的计数器? – sager89
现在,不要忘记logcat,但将来你应该发布它。这通常会帮助我们更轻松地帮助你。看到我的答案。 – codeMagic