在使用dialog、popUpwindow的时候,需要依附当前的activity,如果当前的activity已经destroy了,这个时候去调用dismiss方法,会造成crush。正确的做法有两种。
1、在Activity的onDestroy方法中,判断dialog时候存在,如果存在,销毁掉。
override fun onDestroy() {
super.onDestroy()
dialog.cancel()
dialog = null
}
2、如果当前的Activity无法获取,用的是跟布局的view来创造dialog或者popUpWindow的,可以用当前的view
view.addOnAttachStateChangeListener(object : View.OnAttachStateChangeListener {
override fun onViewDetachedFromWindow(v: View?) {
try {
dismiss()
} finally { }
}
override fun onViewAttachedToWindow(v: View?) {
}
})