所以,我试图在我的应用程序中实现一个简单的计时器,其中我每隔一秒递增一次MM:SS显示。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game);
handler = new Handler();
Runnable runnable = new GameActivity();
handler.postDelayed(runnable, 5000); //Start Incrementing timer after 5s.
}
@Override
public void run() {
// TODO Auto-generated method stub
TextView timeView = (TextView)findViewById(R.id.textView1);
String time = (String) timeView.getText();
if (TimerUtilities.convertMSToSeconds(time) < R.integer.TimeLimit)
{
time = TimerUtilities.incrementOne(time);
timeView.setText(time);
timeView.postInvalidate();
handler.postDelayed(new GameActivity(), 1000);
}
else
{
time = TimerUtilities.incrementOne(time);
timeView.setText(time);
}
}
当我查看logcat输出时 - 我在重写的run方法的findViewById行中得到一个空指针异常。
因为从处理程序线程读取/更新UI,所以问题就出现了。如果是这样,我还有另一种方法吗?
答案 0 :(得分:1)
正在为您创建的新GameActivity调用run方法。永远不会调用setContentView方法,因此它没有任何视图。你可能想打电话
handler.postDelayed(this, 5000);
而不是创建新活动。