【发布时间】:2014-09-17 09:15:06
【问题描述】:
我有一个项目,我使用 FragmentTabHost 和内部片段和 FragmentTabHost
主要的 FragmentActivity
-FragmentTabHost
-TAB 1 - FragmentTabHost
-tab 1 Fragment
-tab 2 Fragment
-TAB 2 - Fragment
-TAB 3 - FragmentTabHost
-TAB 4 - Fragment
当我在主 FragmentTabHost 的第一个 TAB1 中将 tab2 切换到 tab1 时,它们的实例总是重建并且我调用 API 方法,但我只想显示“旧”结果。
如何保存此片段的实例而不对 API 进行任何额外查询?
一些代码片段:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.tab_layout, container, false);
mTabHost = (FragmentTabHost) rootView.findViewById(android.R.id.tabhost);
mTabHost.setup(context, getChildFragmentManager(), R.id.tabContent);
......
mTabHost.addTab(mTabHost.newTabSpec("fragment1").setIndicator(viewLeft),
FragmentTab1.class, new Bundle(0));
UPD1.我尝试添加
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
}
java.lang.IllegalStateException: 无法保留嵌套在其他片段中的片段 在 android.support.v4.app.Fragment.setRetainInstance(Fragment.java:784)
【问题讨论】:
-
@mmlooloo,更新问题
-
尝试添加
setRetainInstance(true); -
加到
-TAB 1 -
是的,我尝试将它添加到 TAB1 和其他情况下的 tab1 并得到相同的错误结果
-
不只是添加到 -TAB1 因为 tab1 是嵌套片段。