Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android NavigationComponents OnBackpress仅适用于系统backpress_Android_Kotlin_Android Navigation_Android Architecture Navigation - Fatal编程技术网

Android NavigationComponents OnBackpress仅适用于系统backpress

Android NavigationComponents OnBackpress仅适用于系统backpress,android,kotlin,android-navigation,android-architecture-navigation,Android,Kotlin,Android Navigation,Android Architecture Navigation,当我从片段中按back键时,需要显示一个对话框,它对系统backbutton栏起作用 requireActivity().onBackPressedDispatcher.addCallback { showDialog() } 但是,它不会弹出navigateUp()click 我试过了 override fun onSupportNavigateUp(): Boolean { return when(navController.currentD

当我从片段中按back键时,需要显示一个对话框,它对系统backbutton栏起作用

requireActivity().onBackPressedDispatcher.addCallback {
            showDialog()
        }
但是,它不会弹出
navigateUp()
click

我试过了

override fun onSupportNavigateUp(): Boolean {
    return when(navController.currentDestination?.id){
        R.id.nav_fragment1 -> {
            showDialog()
            false
        }
        else -> navController.navigateUp()
    }
}

但它也不起作用,你知道如何让这两个程序使用相同的代码吗?

只需使用以下代码块:

  binding.toolbar.setNavigationOnClickListener {
            when (navController.currentDestination?.id) {
                R.id.nav_fragment1-> {
                    if (onBackPressedDispatcher.hasEnabledCallbacks())
                        onBackPressedDispatcher.onBackPressed()
                    else
                        navController.navigateUp()
                }
                else -> navController.navigateUp()
            }
        }

您能再次解释一下您的问题吗:所以您想要这种行为:用户单击后退按钮(系统或屏幕?)->弹出对话框?如果我理解正确,它可以与系统按钮一起工作,但不能与屏幕上的按钮一起工作?为屏幕上的后退按钮添加一个侦听器,并在其中调用对话框功能。否,该应用程序有两个后退按钮,on是向上按钮,另一个是安卓系统提供的向上按钮,目前它仅适用于系统后退按钮,而不适用于向上按钮