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

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
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值