我的代码存在问题
setContentView(R.layout.game);
TextView text = (TextView) findViewById(R.id.qwe_string);
text.setText("Hello Android");
如果它在一个活动中,它可以工作,但如果不是,那么它显然会产生错误:
The method findViewById(int) is undefined for the type new TimerTask(){}
The method setContentView(int) is undefined for the type new TimerTask(){}
代码位于单独的类(非活动)中的计时器内。完整代码如下。
//main timer task for ingame time processing
static Timer gameTimer = new Timer();
static TimerTask gameTimerTask = new TimerTask() {
@Override
public void run() {
setContentView(R.layout.game);
TextView text = (TextView) findViewById(R.id.qwe_string);
text.setText("Hello Android");
}
};
我尝试改变它
ScreenGame.this.setContentView(R.layout.game);
TextView text = (TextView) ScreenGame.this.findViewById(R.id.qwe_string);
text.setText("Hello Android");
但它仍然不起作用:(
PS - 是的,我搜索了其他类似的问题,但所有这些问题看起来都是一样的,实际上完全不同。
答案 0 :(得分:1)
ScreenGame.this.setContentView(R.layout.game);
TextView text = (TextView) ScreenGame.this.findViewById(R.id.qwe_string);
text.setText("Hello Android");
与
完全相同setContentView(R.layout.game);
TextView text = (TextView) findViewById(R.id.qwe_string);
text.setText("Hello Android");
错误代码
你应该创建一个父类,它会触发所有其他活动。在该父类中,您可以引用每个子活动,并且可以询问每个孩子的文本字段:
// In the parent:
child.getTextView().setText("Hello galaxy!");
// with the child method:
TextView getTextView () {
return (TextView) findViewById(R.id.qwe_string);
}
编辑:更多信息:
我给的代码不好,我没有理解你的问题......我希望我现在做,我会努力纠正自己。
创建一个单独的类,例如MyTimer
,它将扩展TimerTask
类:
class MyTimer extends TimerTask {
// your class
}
创建一个构造函数,将TextView作为参数除外,并保存对它的引用。
TextView theTextView;
MyTimer (TextView tv) {
this.theTextView = tv;
}
现在实施run()
:
@Override
public void run() {
setContentView(R.layout.game);
thetextView.setText("Hello Galaxy!");
}
使用以下代码调用此类:
static TimerTask gameTimerTask = new MyTimer((TextView) findViewById(R.id.qwe_string));
我希望这一切都是正确的,我必须从内存中做到这一点,因为我没有任何测试环境。至少它应该帮助你朝着正确的方向发展。
答案 1 :(得分:0)
您将需要:
ScreenGame.this.runOnUiThread( new Runnable(){
public void run(){
TextView text = (TextView) ScreenGame.this.findViewById(R.id.qwe_string);
text.setText("Hello Android"); }
});
您应该在onCreate()
的{{1}}中拨打以下一行:
ScreenGame