android-fragments 在单个活动Android应用中管理onBackPressed

sbtkgmzw  于 2022-11-13  发布在  Android
关注(0)|答案(3)|浏览(157)

我有一个单一的活动应用程序,我想通过按两次后退按钮来管理应用程序退出。现在我不知道如何以及在哪里管理onBack。你能帮助我吗?

e0bqpujr

e0bqpujr1#

将此添加到您的活动

private var doublePressToExit = false
override fun onBackPressed() {
    if (doublePressToExit) {
        super.onBackPressed()
        return
    }
    this.doublePressToExit = true
    Toast.makeText(this, "Please click BACK again to exit", Toast.LENGTH_SHORT).show()

    Handler().postDelayed(Runnable { doublePressToExit = false }, 2000)  // to reset doublePressToExit to false after 2 sec
}
qco9c6ql

qco9c6ql2#

在父活动的onBackpressed()函数中实现此代码

override fun onBackPressed() {
     this.supportFragmentManager
         .primaryNavigationFragment
        ?.findNavController()?.popBackStack()
}

primaryNavigationFragment提供当前显示在屏幕上的片段的示例,我们可以从那里弹出Stack

this.supportFragmentManager.popBackStack()

也可以工作,但在这种情况下,它会破坏导航方向操作的引用,因此在关闭一个片段后打开另一个片段会导致崩溃并出现错误

Navigation component - cannot be found from the current destination
tf7tbtn2

tf7tbtn23#

能做这样的事

override fun onBackPressed() {

    if (i == 0){
        i++
        return
    }
    else {
        i = 0
        super.onBackPressed()
    }
}

相关问题