gpt4 book ai didi

android - hide()/show() 系统是如何工作的? fragment 机器人

转载 作者:行者123 更新时间:2023-11-30 02:29:15 29 4
gpt4 key购买 nike

经过一些研究,我需要在我的应用程序上实现 hide() 和 show() 系统,

现在我这样做:

当我选择一些 fragment 显示在我的菜单上时,我使用 new Fragment() 创建,然后我使用 beginTransaction().replace() 将我的 FrameLayout 上的内容替换为这个新 fragment ...

但是我不需要重新创建这个 fragment ,我想,使用 hide() 和 show() 系统,但是,我该如何实现呢? hide() 和 show() 究竟是如何工作的?我需要使用 backstack 吗?

谢谢!!

最佳答案

我以为我已经尝试过 FragmentManager 的隐藏/显示机制。下面是我实现这一点的源代码的一部分。看一看:此方法隐藏所有可见和非空 fragment :

private void hideAllFrags(FragmentTransaction fragmentTransaction) {
for (String name : fragNames) {
Fragment fragment = fragmentManager.findFragmentByTag(name);
if (fragment != null && !fragment.isHidden()) {
fragmentTransaction.hide(fragment);
}
}
}

然后,关键方法在这里:

{
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
hideAllFrags(fragmentTransaction);
switch (v.getId()) {
case R.id.button1:
if (fragA == null) {
fragA = new FragA();
fragmentTransaction.add(R.id.frag_container, fragA, fragNames[0]);
fragmentTransaction.addToBackStack(fragNames[0]);
} else {
fragmentTransaction.show(fragA);
}
break;
case R.id.button2:
if (fragB == null) {
fragB = new FragB();
fragmentTransaction.add(R.id.frag_container, fragB, fragNames[1]);
fragmentTransaction.addToBackStack(fragNames[1]);
} else {
fragmentTransaction.show(fragB);
}
break;
default:
break;
}
fragmentTransaction.commit();
}

希望对你有所帮助;)

关于android - hide()/show() 系统是如何工作的? fragment 机器人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27494603/

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