我有一个项目,其中我使用了带有内部fragment的FragmentTabHost。
主FragmentActivity
-FragmentTabHost
-TAB 1 - FragmentTabHost
-tab 1 Fragment
-tab 2 Fragment
-TAB 2 - Fragment
-TAB 3 - FragmentTabHost
-TAB 4 - Fragment
当我从主FragmentTabHost中的第一个TAB1切换到TAB2时,它们的实例总是重新构建,并且我调用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));
更新1. 我尝试添加
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
}
java.lang.IllegalStateException: 无法保留嵌套在其他片段中的片段 在android.support.v4.app.Fragment.setRetainInstance(Fragment.java:784)处
setRetainInstance(true);
- mmlooloo