所以这是我的代码。'currentFragment'只是一个字段,用于跟踪当前正在显示的内容。这是一个自身就是片段的类(因此我有一个显示片段的片段)。
所有内容看起来都很好,但是所有片段的视图(onCreateView()和onViewCreated())都在重新创建。我希望附加和分离会起作用,但它并没有。我要保留视图的原因是当用户返回时,他们的选择仍然存在。
另一个选择是显示和隐藏,但我不知道如何使其工作,因为拥有此代码的片段具有一个FrameLayout(R.id.setup_content_holder),该布局包含我想要添加的片段,而我不能只添加四个片段并将其中三个隐藏。有一个选项可以添加一个没有容器的片段,但我不知道它应该如何工作。
那么,有什么建议吗?
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();
}
所有内容看起来都很好,但是所有片段的视图(onCreateView()和onViewCreated())都在重新创建。我希望附加和分离会起作用,但它并没有。我要保留视图的原因是当用户返回时,他们的选择仍然存在。
另一个选择是显示和隐藏,但我不知道如何使其工作,因为拥有此代码的片段具有一个FrameLayout(R.id.setup_content_holder),该布局包含我想要添加的片段,而我不能只添加四个片段并将其中三个隐藏。有一个选项可以添加一个没有容器的片段,但我不知道它应该如何工作。
那么,有什么建议吗?