如何在片段内完成任务之前禁用后退按钮功能?

How to disable back button functionality until a task is completed inside a fragment?

我正在使用单个 activity 作为我的片段的容器,我的 onCreate 方法中的第二个片段在协程范围内运行 for 循环,但是如果用户按下系统的后退按钮,应用程序会崩溃空指针异常...如何在协程作业完成之前禁用后退按钮功能?

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    setClickListeners()
    //This creates buttons on the layout dynamically
    GlobalScope.launch(Dispatchers.Main) {
        delay(100)
        for (i in 0 until runTillAndHowMany) {
            createButton()
            delay(25)
        }
    }

}

我知道在 onCreate 中这样使用 GlobalScope 是错误的,但没有找到任何替代方法,我希望在屏幕上一个一个地创建自定义按钮的动画。

我正在使用 NavigationComponent 库和过渡动画

您可以创建一个布尔变量来处理这个问题。所以在你的 Activity 中你可以这样声明它:

var shouldGoBack: Boolean = false

然后您重写您的 onBackPressed 方法,如下所示

override fun onBackPressed() {
   if(shouldGoBack)
     super.onBackPressed()
}

最后,您访问 Fragment 上的变量,并在协程完成后将其设置为 true:

(activity as YourActivity).shouldGoBack = true

如果有效请告诉我!