我有一个项目,我使用FragmentTabHost与FragmentTabHost的内部片段
Main FragmentActivity
-FragmentTabHost
-TAB 1 - FragmentTabHost
-tab 1 Fragment
-tab 2 Fragment
-TAB 2 - Fragment
-TAB 3 - FragmentTabHost
-TAB 4 - Fragment
当我将tab2切换到主FragmentTabHost的第一个TAB1中的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:不能保留嵌套在其他片段中的fragements 在android.support.v4.app.Fragment.setRetainInstance(Fragment.java:784)
答案 0 :(得分:0)
如果您不想重建任何选项卡的实例,只需将API的响应对象作为全局变量&在onCreateView上签入
YourResponseObject yourResponseObject; //这应该是全局的
if(YourResponseObject == null){
// Hit API here
}else
{
InflateYourData(YourResponseObject)
}
您将能够保留标签的实例。