如何在片段内完成任务之前禁用后退按钮功能?
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
如果有效请告诉我!
我正在使用单个 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
如果有效请告诉我!