在appcompatactivity中,我在特定事件中显示一个alertdialog。
一旦显示alertdialog,用户就不能再单击我的appcompatactivity中的任何内容。
我尝试禁用onpause()中的活动: getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE, WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
检查是否暂停: getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.RESUMED)
但是onpause()的调用速度似乎不够快。
我可以在每次暂停appcompatactivity时将静态布尔值设置为true,在onresume()中将其设置为false,并在每个onclicklistener/ontouchtlistener中检查它,但是有更好的方法吗?
感谢您的帮助!
编辑:谢谢你的评论!我发现,当我在ui线程启动时(用于打开alertdialog)在屏幕上单击时,单击被放入一个队列中。这就是为什么在alertdialog运行时执行click事件。我需要保存alertdialog并检查它是否正在运行还是有更好的方法?
1条答案
按热度按时间vxf3dgd41#
我相信你应该让我们更多地了解你的代码。不过,我想我能猜出你在说什么。有一个
setEnabled(false)
方法,如果您在视图组件java对象上调用它,它将被禁用并且不再可单击。因此,只要在需要显示alertdialog时禁用组件,然后通过调用setEnabled(true)
如果你愿意的话。我很确定暂停活动不是你应该做的。因为手动操作根本不是最佳实践。