我在片段上显示一个对话框,当异步任务完成执行时,该对话框应该被解除。一切都很好,直到我在对话框显示时改变方向:我得到一个Window泄漏错误。我知道这是因为重新创建了活动,并且对话框“附加”到旧的。我不能在清单上使用android:configChanges="keyboardHidden|orientation|screenSize"
因为我有横向和纵向的不同布局,所以我在onPause()
方法上取消了对话框,并在创建新活动时再次重新创建它。但现在我有一个不同的问题:我的异步任务没有对新对话框的引用,所以它不能解雇它...
我已经使用对话框片段尝试了相同的操作,但问题仍然存在。
有解决这个问题的方法吗?
感谢。
答案 0 :(得分:0)
我知道你说你不能使用android:configChanges="keyboardHidden|orientation|screenSize"
,因为你有不同的横向和纵向布局,但看看Android documentation关于处理配置改变自己3}强>:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Checks the orientation of the screen
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
setContentView(R.layout.landscapeLayout);
//update your view elements, if any
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
setContentView(R.layout.portraitLayout);
//update your view elements, if any
}
}
通过这种方式,您可以保留不同的布局,并保留对话框的引用