(Kotlin)Fragment Back 堆栈句柄

Posted

技术标签:

【中文标题】(Kotlin)Fragment Back 堆栈句柄【英文标题】:(Kotlin)Fragment Back stack handle 【发布时间】:2022-01-22 13:05:04 【问题描述】:

当我使用 backStackEntryCount > 1. popbackstack() 时,它不会导航到底部导航的任何片段

我需要知道的是,如何只堆叠一次片段,这样我就可以按一次后退按钮,这将导航到 Activity。

 private fun navBottomClick() 
    bottomNavigationView?.setOnItemSelectedListener 

        when (it.itemId) 

            R.id.workout -> 
                var fragmentTransaction: FragmentTransaction =
                    supportFragmentManager.beginTransaction()
                fragmentTransaction.replace(R.id.container, WorkoutFragment(), "WORKOUT")
                fragmentTransaction.addToBackStack("WORKOUT")
                fragmentTransaction.commit()
            
            R.id.health -> 
                var fragmentTransaction: FragmentTransaction =
                    supportFragmentManager.beginTransaction()
                fragmentTransaction.replace(R.id.container, HealthyFoodFragment(), "HealthFood")
                fragmentTransaction.addToBackStack("HealthFood")
                fragmentTransaction.commit()
            
        
        true
    

【问题讨论】:

【参考方案1】:

没有 backStack 你可以试试这个

override fun onBackPressed() 
        if (binding.bottomNavigation.selectedItemId == R.id.home) 
            moveTaskToBack(true)
         else 
            binding.bottomNavigation.selectedItemId = R.id.home
            val homeFragment = HomeFragment.newInstance()
            openFragment(homeFragment)
        
    

【讨论】:

你能告诉我绑定=这里是什么吗? 绑定只是数据绑定,您无需绑定即可执行此操作。只需使用您的 bottomNavigation id 而不是 binding.bottomNavigation ty bro luv ya...【参考方案2】:

尝试打印日志supportFragmentManager.backStackEntryCount

我认为条件是supportFragmentManager.backStackEntryCount > 0

【讨论】:

以上是关于(Kotlin)Fragment Back 堆栈句柄的主要内容,如果未能解决你的问题,请参考以下文章

Android-Kotlin在Fragment获取View

Kotlin:如何从 Fragment 调用 JobIntentService?

调用 Fragment 构造函数导致异常,kotlin?

如何从 Back Press 的 Activity 中返回 Fragment

返回 Activity / Fragment 历史记录时的 Android Back Button 行为

Kotlin:是不是可以从 Activity-1 的 Fragment 移动到 Activity-2