gpt4 book ai didi

android - 如何防止 fragment 的 onCreateView() 被调用?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:37:40 25 4
gpt4 key购买 nike

这是我的代码。 'currentFragment' 只是一个跟踪当前显示内容的字段。这是一个本身是 fragment 的类(所以我有一个显示 fragment 的 fragment )。

private void selectNavBarItem(NavbarItem v)
{
Fragment fragmentToUse = null;

if (v == setpointsNavItem)
{
fragmentToUse = setpointsFragment;
}
else if (v == rapidSetupNavItem)
{
fragmentToUse = rapidSetupFragment;
}
else if (v == outdoorResetNavItem)
{
fragmentToUse = outdoorResetFragment;
}
else if (v == rampDelayNavItem)
{
fragmentToUse = rampDelayFragment;
}

if (fragmentToUse != null)
{
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();

if (currentFragment != null)
{
ft.detach(currentFragment);
}

currentFragment = fragmentToUse;

if (currentFragment.isDetached())
{
ft.attach(currentFragment);
}
else
{
ft.add(R.id.setup_content_holder, currentFragment);
}

ft.addToBackStack(null);
ft.commit();
}

一切看起来都很棒,但是正在为所有 fragment 重新创建 View (onCreateView() 和 onViewCreated())。我希望附加和分离会起作用,但事实并非如此。我要保留该 View 的原因是,当用户返回时,他们的选择仍然存在。

另一个选项是显示和隐藏,但我不知道如何让它工作,因为拥有这段代码的 fragment 有一个 FrameLayout (R.id.setup_content_holder),它包含我要添加的 fragment ,我可以'只需向其中添加四个 fragment 但隐藏其中三个。有一个选项可以添加没有容器的 fragment ,但我不知道它应该如何工作。

那么,有什么想法吗?

最佳答案

试试这个,这将解决您的 frgment view r-creating 问题;

 @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if (mFragmentView != null) {
((ViewGroup) mFragmentView.getParent()).removeView(mFragmentView);
return mFragmentView;
}

mFragmentView = inflater.inflate(R.layout.home_fragment, container, false);

..... // your remaining code
}

关于android - 如何防止 fragment 的 onCreateView() 被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21104716/

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