这个错误通常会在Activity关闭或销毁时出现,原因是在关闭Activity之前,Dialog对象未被正确地关闭或释放。解决方法是在Activity的生命周期方法中正确地关闭Dialog对象。
以下是一个示例代码,演示如何正确处理Dialog对象的关闭:
public class MainActivity extends AppCompatActivity {
private Dialog dialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
showDialog();
}
private void showDialog() {
dialog = new Dialog(this);
dialog.setContentView(R.layout.dialog_layout);
dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
dialog.show();
}
@Override
protected void onDestroy() {
super.onDestroy();
dismissDialog();
}
private void dismissDialog() {
if (dialog != null && dialog.isShowing()) {
dialog.dismiss();
dialog = null;
}
}
}
在这个示例中,我们在onCreate()
方法中调用showDialog()
方法来显示Dialog。在onDestroy()
方法中调用dismissDialog()
方法来关闭Dialog。在dismissDialog()
方法中,我们检查Dialog是否存在并且正在显示,如果是,则调用dismiss()
方法关闭Dialog,并将Dialog对象设置为null。
通过这种方式,我们确保在Activity关闭时正确地关闭Dialog对象,避免了窗口泄漏的问题。
上一篇:android.view.ViewRootImpl$CalledFromWrongThreadException: 只有创建视图层次结构的原始线程才能触摸其视图。(RxJava)
下一篇:android.view.WindowManager$BadTokenException: 无法添加窗口-无效的令牌null;您的活动是否正在运行