在我的 updateGUI() 函数中,我像这样更新每个 TextView:
((TextView) findViewById(R.id.lbTrackerLat)).setText(String.valueOf(lat));
((TextView) findViewById(R.id.lbTrackerLong)).setText(String.valueOf(lng));
((TextView) findViewById(R.id.lbTrackerAlt)).setText(String.valueOf(alt));
当我通过在 onCreate 中分配 onclick 按下按钮调用 updateGUI() 时,更新总是有效的。
我有一个 locationListener ,当用户单击另一个按钮时启动,并且在每个更新事件中我也在那里调用 updateGUI() ,它一直工作到屏幕第一次旋转,之后由于某种原因屏幕没有刷新。
在试图找出原因时,我已将此代码添加到 updateGUI() 函数中:
TextView t = (TextView) findViewById(R.id.lbTrackerPostLastRefresh);
t.setText(formattedDate);
Log.d("H","EXIT lbTrackerPostLastRefresh="+t.toString());
旋转后(再次调用 onCreate),当从按钮单击调用它时,我得到 44c76a78 作为指针。locationListener更新函数调用findVIewByID时,返回指针44c1b518!!??
我知道布局被破坏并重新创建,但为什么 findViewById 返回旧指针值?
Spitballing:即使在设备旋转时实例化了新视图之后,从初始 onCreate 开始的视图的第一个实例就好像继续愉快地继续(连同它的资源)。也许 LocationListener 这样做是因为我没有停止它。但是每次旋转设备时停止和启动它似乎很愚蠢!