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

标签 android fragment hide show

经过一些研究,我需要在我的应用程序上实现 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/

相关文章:

java - GridView 显示在工具栏前面而不是下方

java - 在另一个元素中使用显式等待查找元素

android - viewpager 的自定义动画

javascript - 如何在页面第二次加载时停止弹出窗口?

css - 悬停时隐藏绝对定位的div

Android ListView 项目对齐

Android:针对不同的应用程序风格使用不同的字符串

android - 滑动时 ViewPager 更新 fragment

Android:从数据库获取数据到ListFragment

Android - 隐藏所有显示的 Toast 消息