gpt4 book ai didi

android - 在 Fragment TabHost 中保存实例

转载 作者:太空宇宙 更新时间:2023-11-03 11:10:27 26 4
gpt4 key购买 nike

我有一个项目,我使用 FragmentTabHost 和 FragmentTabHost 的内部 fragment

主要 fragment Activity

-FragmentTabHost 
-TAB 1 - FragmentTabHost
-tab 1 Fragment
-tab 2 Fragment
-TAB 2 - Fragment
-TAB 3 - FragmentTabHost
-TAB 4 - Fragment

当我在主 FragmentTabHost 的第一个 TAB1 中将 tab2 切换到 tab1 时,它们的实例总是重建并且我调用 API 方法,但我只想显示“旧”结果。

我怎样才能保存这个 fragment 的实例并且不对 API 进行任何额外的查询?

一些代码 fragment :

@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: 无法保留嵌套在其他 fragment 中的 fragment 在 android.support.v4.app.Fragment.setRetainInstance(Fragment.java:784)

最佳答案

如果不想重建任何tab的实例,只需要将API的响应对象作为全局变量,在onCreateView中勾选即可

你的响应对象你的响应对象;//这应该是全局的

if(YourResponseObject == null){
// Hit API here
}else
{
InflateYourData(YourResponseObject)
}

您将能够保留选项卡的实例。

关于android - 在 Fragment TabHost 中保存实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25886601/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com