Android - Can't dismiss dialog on android Q
网上搜了很多答案,比如handle内存泄漏,dialog点击了多次之类的,对我来说都不适用,于是有了以下的解决方案。但是其中原由我还没弄清楚,如果看过这篇文章的人了解,请告诉我,谢谢!Better togeter!
1. 我的dialog是全屏显示的,在android 10以下的手机上都是可以dismiss成功的,但是就是在android 10上不成功,dismiss代码明明执行成功了就是不消失,怀疑是源码里执行到某一步直接return了,还没来得及使窗口关闭。所以把全屏功能关闭就可以了。
final Dialog dialog = new Dialog(activity); // final Dialog dialog = new Dialog(activity,android.R.style.Theme_Translucent_NoTitleBar); //全屏显示 dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); //正常显示 dialog.setCancelable(false);
2. 如果有需求必须要全屏显示,那么可以换一种方式实现全屏。
final Dialog dialog = new Dialog(activity); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setCancelable(false); dialog.setContentView(R.layout.test_dialog); //设置全屏 Window window = dialog.getWindow(); window.getDecorView().setPadding(0, 0, 0, 0); window.setGravity(Gravity.CENTER); WindowManager.LayoutParams lp = window.getAttributes(); lp.width = WindowManager.LayoutParams.MATCH_PARENT; lp.height = WindowManager.LayoutParams.MATCH_PARENT; window.setAttributes(lp);

浙公网安备 33010602011771号