我熟悉Activity的View状态恢复,并且按承诺做得很好,但是我遇到了这样的情况:即使TextView
之类的小部件也无法恢复最后设置的视图状态。< / p>
场景很简单:
假设我有2个片段-活动A的F1和F2。每个片段都有一堆标准小部件-TextView
,EditText
,Imageview
等。执行事务以将片段F1替换为F2并更改某些TextView的文本状态:
getSupportFragmentManager().beginTransaction()
.addToBackStack(null)
.replace(R.id.fragment_container, f2Fragment)
.commit();
// In the containing Activity(this is done before replacing f1 with f2):
getSupportFragmentManager().beginTransaction()
.addToBackStack(null)
.add(R.id.fragment_container, f1Fragment)
.commit();
接下来,我在Fragment F2上,我决定按后退按钮。现在回到F1了,这就是问题-所有更改了文本的TextView
都恢复了原始的起始文本。可见性已至少更改为INVISIBLE
一次,然后又更改回VISIBLE
的窗口小部件不再可见。同样,翻转按钮的启用状态似乎也会重置。
我记得阅读过文档,并且我认为View状态恢复是承诺的合同的一部分。我所面对的情况已经使使用Fragment
的魅力消失了。
我在做什么错了?
PS :我曾尝试为片段标签名称提供一个“字符串”以及addToBackStack()
中的一个字符串,但这没有帮助