我在一个大项目中遇到了问题。我会尝试将其归结为(我希望)重要的一点。我有一个由几个Activity
组成的应用程序,其中一个是其他人从中启动的主要导航点。
主要Activity
被销毁并重新创建后(通过导航到另一个Activity
并返回),查看更新似乎无法正常工作。具体来说,我有一个Button
和几个TextView
。重新创建Activity
后,我无法更改其文字。我尝试更改Activity
背景颜色,但这也不起作用。
我的第一个想法是我在保存/恢复过程中错过了一个重要的数据成员。但是,我已经看了很多,我认为这不是问题所在。此外,我已尝试不加载已保存的数据并重新开始,但仍然无法更新视图。
接下来,我认为我可能没有在UI线程上进行更新。我确定会导致异常,但可以肯定的是,我已将更新发布到Handler
。仍然没有骰子。
onClick()
,我可以看到有限的UI更改。在这种情况下,什么有效,什么不起作用引发了其他问题(某些数据已被破坏),所以现在我集中了我的调查。一旦我获得更多的映射,我将提供更新。
我还应该注意什么?
更新:添加一些代码段:
来自onCreate()
:
if (savedInstanceState != null) {
Log.v(Calculations.log, "Restarting with saved instance state");
Serializable ser = savedInstanceState.getSerializable("infusion");
if ((ser != null) && (ser instanceof Infusion)) {
mInfusion = (Infusion) ser;
}
mBeganEditing = savedInstanceState.getBoolean("editing",
mInfusion != null);
Log.v(Calculations.log, this.toString());
}
及其匹配onSaveInstanceState()
:
@Override
protected void onSaveInstanceState(Bundle outState) {
Log.v(Calculations.log, "StageInfusion::onSaveInstanceState()");
Log.v(Calculations.log, this.toString());
outState.putSerializable("infusion", mInfusion);
outState.putBoolean("editing", mBeganEditing);
outState.putBoolean("resume", true);
ServerManager.stopListening();
super.onSaveInstanceState(outState);
}
我希望还有其他成员应该保存,但是他们的后果不大。