Android横竖屏切换Dialog、PopWindow无法消失的问题

当Android Activity配置了`configChanges`属性,导致横竖屏切换时Dialog和PopWindow不会自动消失。解决方法包括在onConfigurationChanged中手动关闭,或在PopWindow的父布局中监听配置变化并关闭。
摘要由CSDN通过智能技术生成

Android实际开发当中,经常会使用到Dialog以及PopWindow这些窗体控件,而这些控件的应用场景往往是这样的,切换横竖屏的时候,你要让它消失。其实正常情况下,在Activity中显示一个Dialog或者PopWindow的时候,切换横竖屏的时候,这些控件是会自动消失的。但是呢,如果你给Activity配置了如下属性,就会导致Dialog及PopWindow消失不了:

android:configChanges="screenSize|orientation"

这个属性设置之后,会导致Activity不会重新创建,原因就是Activity生命周期不会重新走一次(两者缺一不可)。这时候由于Activity没有销毁,在该Activity上的View以及窗体都不会销毁,Activity只会执行onConfigurationChanged方法,最后导致Dialog以及PopWindow在横竖屏切换时不会自动消失。
那么怎么解决这个问题呢?
1.监听Activity或Fragment的onConfigurationChanged方法,方向改变时自己设置让PopWindow(Dialog同理)消失。但是实际开发中,根本就没法预料你可能需要在哪个地方弹出来一个PopWindow,可能是在一个Fragment中可能是在一个自定义View中,也可能在不同的模块中,最烦的就是为传一个方向改变事件,要写好几个方法,一层一层的往下传。怎么让PopWindow自己去检测事件自己消失呢?看第二种方法。
2.我们都知道Activity以及Fragment都有监听方向改变的方法,就是onConfigurationChanged(),其实我们经常用到的View的方法也是有这个方法的,如下:

/**
 * Called when the cur
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值