未使用 navController.currentDestination?.id 获取当前片段 ID

Not getting current fragment id using navController.currentDestination?.id

我有一个带按钮的 activity,在它下面我有 navhost 片段和 3 个片段。 但是当我点击按钮时没有任何反应,我变厚了,因为片段的 id 没有得到。 这是我的代码:

class MainActivity : AppCompatActivity() {

    private lateinit var binding: ActivityMainBinding


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        val view = binding.root
        setContentView(view)

        val navHostFragment = supportFragmentManager.findFragmentById(R.id.navHost) as NavHostFragment
        val navController = navHostFragment.navController
        val id = navController.currentDestination?.id

        binding.myButton.setOnClickListener {
            if (id == R.id.firstFragment) {
                navController.navigate(R.id.goto_secondFragment)
            }
            if (id == R.id.secondFragment) {
                navController.navigate(R.id.goto_thirdFragment)

            }
        }
    }

}

问题是您只获得了一次 currentDestination id,因为在创建 activity 时调用了 onCreate 并且您想检查当您单击 Button 时您当前在哪个片段上,所以只需移动

这个

val id = navController.currentDestination?.id

点击按钮进入

像这样

        binding.myButton.setOnClickListener {
           val id = navController.currentDestination?.id
            if (id == R.id.firstFragment) {
                navController.navigate(R.id.goto_secondFragment)
            }
            if (id == R.id.secondFragment) {
                navController.navigate(R.id.goto_thirdFragment)

            }
        }

现在,当您单击下一个或上一个按钮时,它将首先获取当前目标 ID,然后检查您现在所在的片段。