【发布时间】:2013-12-10 07:27:18
【问题描述】:
请帮我解决我的问题。
我有一个带有框架布局的MainActivity。我想将一些片段替换到框架布局中。现在我遇到一个问题,它是:
1) 我创建了片段 A 并将其放入 framelayout。片段 A 称为 onCreateView...等。
2) 然后我创建了片段 B 并将其放入布局中……片段 A 被放在了后台堆栈上,它称为onPause()(不称为onDeattach(),onDestroy...)
3) 我按下了返回按钮。片段 A 是从 backstack 中获得的,但它再次调用了onCreateView()。此操作使我的应用程序有一些其他问题。
所以我的问题是如何将片段 A 存储在 backstack 中并且它不会重新创建视图。
这是用来改变片段的方法:
public static void setContent(FragmentManager managerFragment, Fragment detailFragment) {
if (managerFragment != null) {
if(lastFragment==null && detailFragment instanceof HomeVer3Fragment ||
(lastFragment!=null && detailFragment instanceof HomeVer3Fragment && lastFragment instanceof HomeVer3Fragment)){
return;
}
String tag=detailFragment.getClass().getName();
managerFragment.popBackStackImmediate(tag, FragmentManager.POP_BACK_STACK_INCLUSIVE);
FragmentTransaction ft = managerFragment.beginTransaction();
ft.replace(R.id.content_frame, detailFragment);
ft.addToBackStack(tag);
ft.commit();
lastFragment = detailFragment;
}
}
感谢和抱歉我的问题,我的英语不好。
【问题讨论】:
-
developer.android.com/guide/components/fragments.html#Lifecycle。您需要查看第 2 点和第 3 点的片段生命周期
标签: android fragment back-stack