使用底部导航栏管理片段

资产Bekbossynov

我在更改容器中的片段时遇到问题。我有三个导航:HomeSpecial offersProfileHome导航中可能是fragment1_1fragment2_2取决于情况。我的问题是从容器中显示碎片。我尝试使用它findFragmentById,但是当我Profile导航并尝试进入Home代码时,请不要hide()使用Pofile我试图查看日志,发现它隐藏Home并显示Home我的导航代码:

botNav.setOnNavigationItemSelectedListener {
        when(it.itemId){
            R.id.act_home -> {
                if (!it.isChecked){
                    val homeFragment = supportFragmentManager.findFragmentByTag("Home")
                    activeFragment = supportFragmentManager.findFragmentById(R.id.fragment_container)
                    activeFragment?.let { hideFragment(it) }
                    showFragment(homeFragment!!)
                }
            }
            R.id.act_profile_info -> {
                if (!it.isChecked) {
                    activeFragment = supportFragmentManager.findFragmentById(R.id.fragment_container)
                    activeFragment?.let { hideFragment(it) }
                    showFragment(profileFragment)
                }
            }
            R.id.act_special_offer -> {
                if (!it.isChecked) {
                    activeFragment = supportFragmentManager.findFragmentById(R.id.fragment_container)
                    activeFragment?.let { hideFragment(it) }
                    showFragment(specialFragment)

                }
            }
        }
        return@setOnNavigationItemSelectedListener true
    }

因此,现在我想了解为什么这样做,以及如何从FrameLayout容器中显示片段为了为导航添加片段,我使用了addFragment()功能。

糯米饭

你可以试试看 我的工作正常测试。

每当要添加并显示先前的现有片段时,请调用此波纹管方法

 /**
 * Method for add and replace and set fragment if exist in stack
 */
fun setAndReplaceFragment(fragmentWantToAdd: Fragment, tag: String) {
    val manager = supportFragmentManager
    val fragmentFind = manager.findFragmentByTag(tag)
    if (fragmentFind != null) {
        val ft = manager.beginTransaction()
        ft.replace(R.id.mFrmContainer, fragmentFind, tag)
        ft.addToBackStack(tag)
        ft.commit()
    } else {
        val ft = manager.beginTransaction()
        ft.replace(R.id.mFrmContainer, fragmentWantToAdd, tag)
        ft.addToBackStack(tag)
        ft.commit()
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用嵌套片段时底部导航栏消失

来自分类Dev

使用底部栏和片段进行完美的导航

来自分类Dev

使用片段实现组成底部导航

来自分类Dev

使用底部导航栏浏览网页视图

来自分类Dev

当片段加载闪烁时,使用导航组件进行底部导航

来自分类Dev

使用片段/工具栏返回导航

来自分类Dev

如何将底部导航栏的起始默认片段设置为中心/中间片段?

来自分类Dev

导航栏显示在底部

来自分类Dev

底部导航栏空白

来自分类Dev

创建底部导航栏

来自分类Dev

测试使用父活动的底部导航视图的片段

来自分类Dev

如何使用xml在底部导航视图上方设置片段?

来自分类Dev

使用navhost停止底部导航中的片段刷新

来自分类Dev

Android导航底部片段重叠

来自分类Dev

底部导航和片段娱乐

来自分类Dev

在家庭活动中加载片段时的“幽灵”底部导航栏

来自分类Dev

Android Studio 底部栏导航:如何添加到每个片段?

来自分类Dev

我的底部导航栏仅在我双击以切换片段时才有效

来自分类Dev

修复底部导航栏在其片段包含协调器布局时不断扩展

来自分类Dev

如何使用底部导航栏快速浏览到特定屏幕

来自分类Dev

如何使用“ addOnDestinationChangedListener”删除底部导航和工具栏

来自分类Dev

导航抽屉和底部栏

来自分类Dev

颤振底部导航栏

来自分类Dev

导航抽屉和底部栏

来自分类Dev

导航栏飞到底部

来自分类Dev

使用导航抽屉模板更改片段中的工具栏

来自分类Dev

从底部导航栏导航至独立屏幕

来自分类Dev

使用片段和Backstack时管理操作栏标题

来自分类Dev

使用片段和Backstack时管理操作栏标题