我在一个大项目中遇到了问题。我将尝试将其归结为(我希望)是重点。我有一个由几个Activity
s 组成的应用程序,其中一个是其他启动的主要导航点。
一旦 mainActivity
被破坏并重新创建(通过导航到另一个Activity
并返回),视图更新似乎不起作用。具体来说,我有一个Button
和几个TextView
s。重新创建后Activity
,我无法更改其文本。我试过改变Activity
背景颜色,也不管用。
我的第一个想法是我在保存/恢复过程中错过了一个重要的数据成员。但是,我已经看了很多,我认为这不是问题。另外,我尝试不加载保存的数据并重新开始,但它仍然没有更新视图。
接下来,我认为我可能不会在 UI 线程上进行更新。我确定这会导致异常,但可以肯定的是,我将刷新发布到Handler
. 还是没有骰子。
但是,如果我将它们连接到onClick()
. 在这种情况下,哪些有效,哪些无效会引发其他问题(一些数据已损坏),所以现在这就是我集中调查的地方。一旦我得到更多的映射,我会提供更新。
我还应该看什么?
更新:添加一些片段:
来自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);
}
我希望还有其他成员应该被拯救,但他们的影响很小。