【问题标题】:Why does the fragment reset the activity it goes to?为什么片段重置它去的活动?
【发布时间】:2016-08-05 03:06:22
【问题描述】:
我在片段中有一个导航栏(一堆按钮),我试图在我的应用程序的每个页面上都有它。
当我与主页交互并将按钮上的文本更改为 abc 然后单击导航栏片段时,我成功进入下一页。当我点击 android 的返回按钮时,应用程序成功返回到 Activity,文本更改为 abc。
但是,如果我将文本更改为 abc,然后单击导航栏到新页面,然后单击导航栏返回主页,则文本已重置为原始值而不是 abc。
我真的不确定如何解释这个问题,有人有任何线索或想要更多说明吗?
【问题讨论】:
标签:
android
android-fragments
android-lifecycle
【解决方案1】:
在没有代码库和 UI 的情况下,很难理解您的应用功能。据我了解,我相信您在单击导航栏上的后退按钮时并没有使用 savedInstancestate 捆绑对象来保存数据。如果要保存文本更改,则必须在返回活动或启动新活动/片段之前捆绑数据。看两件事:
- 活动/片段生命周期。
- SavedInstanceState
【解决方案2】:
您的片段在添加/替换时需要标签或 id 才能恢复。
String mCurrentOverlayFragmentTag = "ControlOverlayFragment";
getFragmentManager()
.beginTransaction()
.replace(R.id.overlayHolder, fragment, mCurrentOverlayFragmentTag)
.commit();