【发布时间】:2012-01-22 01:14:15
【问题描述】:
我在 xml 中有一个布局。
在我的活动中,在 onCreate 方法中,我得到了对我想要定期更新的视图的引用,如下所示:
TextView myText = (TextView)findViewById(R.id.textview1);
然后,在一个周期性的方法中,我这样做:
myText.setText(Float.toString(myData));
它工作正常,直到屏幕旋转。
我读到当屏幕旋转时,布局被重新创建,并且布局上的所有视图都被重新创建,所以旧的引用不起作用。
我的代码:
private TextView myText; //Its a class member
public void onCreate(Bundle savedInstanceState) {
//Other things
myText = (TextView)findViewById(R.id.textview1);
//Other things
}
//This is the periodic method, it occurs many times per second
public final void onSensorChanged(SensorEvent event) {
myText.setText(Float.toString(event.myData));
//This setText works fine until the screen rotation
}
我怎样才能永久引用视图? 我怎么知道屏幕什么时候旋转了?
感谢
【问题讨论】:
-
“旧参考不起作用”是什么意思?你有例外吗?
-
在上面的代码中,“myText”存储了对 TextView 的引用。但是当屏幕旋转时,该 TextView 被销毁,并且其他 TextView 在新布局中替换它(在旋转发生时创建),因此 myText 现在引用了一个不存在的 TextView。
-
但是你在哪里设置
myText成员变量?在您的示例代码中,您正在设置一个本地。你能告诉我们更多代码吗? -
我将用更多代码编辑问题,对不起:P
标签: android android-view