我创建了一个简单的应用程序,它将计数加1,并在TextView上显示计数。它编译和安装很好,但是当我运行它时,一条消息立即说“不幸的是,计数器已停止。”
package com.android.counter;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class CounterActivity extends Activity {
/** Called when the activity is first created. */
private static int count = 0;
Button increment = (Button) findViewById(R.id.inc);
TextView tv = (TextView) findViewById(R.id.CountDisp);
Runnable update = new Runnable()
{
public void run() {
increment.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
count++;
tv.setText("Count:" + count);
}
});
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Thread thr = new Thread(update);
thr.start();
}
}
答案 0 :(得分:1)
您需要在尝试查找任何视图之前设置Activity
的内容。这样做......
Button increment = (Button) findViewById(R.id.inc);
TextView tv = (TextView) findViewById(R.id.CountDisp);
...您目前所处的位置,意味着increment
和tv
都是null
。将这些行改为......
Button increment;
TextView tv';
然后在findViewById(...)
调用onCreate(...)
之后setContentView(...)
使用Thread
此外,使用单独的onClick(...)
(Runnable)来处理onClick(...)
侦听器会使事情变得复杂并且不是必需的。只需在onCreate(...)
中创建{{1}}侦听器,忘记其他线程代码。
答案 1 :(得分:0)
您需要查看LogCat。您可以使用Eclipse或DDMS工具执行此操作。 LogCat日志将显示:
使用该信息,您可以找到原因。仅从源代码中进行操作就是受虐狂。