我定制了后退按钮.当我点击它时,应用程序在一秒钟后崩溃.

    private var mBackPressed: Long = 0
    private val timeInterval = 2000



    private fun configBackPress() {
        requireActivity().onBackPressedDispatcher.addCallback(this, true) {
            when {
                mBackPressed + timeInterval > System.currentTimeMillis() -> {
                   
                    requireActivity().onBackPressedDispatcher.onBackPressed()
                }
                else -> {
                    Snackbar.make(
                        requireActivity().findViewById(android.R.id.content),
                        getString(R.string.press_once_again_back_button_to_exit),
                        Snackbar.LENGTH_SHORT
                    )
                        .setAnchorView(viewBinding.vSnackBarHelper)
                        .show()

                    mBackPressed = System.currentTimeMillis()
                }
            }
        }
    }

当用户在back按钮上单击两次时,back应该可以工作.

推荐答案

before calling requireActivity().onBackPressedDispatcher.onBackPressed(). you should set isEnabled to false because if we go through the onBackPressed source code we see: enter image description here

它会查找活动回调,如果发现任何回调,就会调用它们并返回.这就是形成循环的原因.

你的代码应该是:

isEnabled = false
requireActivity().onBackPressedDispatcher.onBackPressed()

Android相关问答推荐

无法使用MenuItemColors.Copy()

ERR_SSL_VERSION_OR_CIPHER_MISMATCH - Android Webview

在Jetpack Compose中实现自动换行

页面更改时不显示 cogo toast 消息

Android-交叉引用表中的ForeignKey用于什么?

jetpackcompose-如何对解析后的复杂对象进行状态提升?

Android 14预测性背部手势-闪烁的白色背景色

LaunchedEffect没有延迟时应用程序崩溃

FFmpeg Android 错误

从 Jetpack Compose 中的图像中删除默认高度

了解 CoroutineScope(Job() + Dispatchers.Main) 语法

需要在按钮 onclick 上从 string.xml 获取值. @Composable 调用只能在@Composable 函数的上下文中发生

在段的中心绘制饼图(甜甜圈图)的图例

任务 ':app:checkReleaseDuplicateClasses' 执行失败

Visual Studio 无法在 Android 上编译 .NET MAUI 项目

React-native 3D对象渲染

如何只允许拖动 BottomSheetScaffold 中 BottomContent 的 SheetPeek 的一部分?

在 Jetpack Compose 中清除列表时可组合不重组

不能在kotlin的lazycolumn中使用列表

CenterAlignedTopAppBar 滚动行为:未为参数状态传递值