如何解决如何禁用后退按钮功能,直到片段中的任务完成?
我使用单个活动作为片段的容器,其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库和过渡动画
解决方法
您可以创建一个布尔变量来处理此问题。因此,在您的活动中可以这样声明:
var shouldGoBack: Boolean = false
然后您重写onBackPressed方法,如下所示
override fun onBackPressed() {
if(shouldGoBack)
super.onBackPressed()
}
最后,在协程完成后,访问Fragment上的变量并将其设置为true:
(activity as YourActivity).shouldGoBack = true
让我知道它是否有效!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。