Android中对话框显示需要判断的前提条件
16lz
2021-01-26
1.显示dialog的时候需要判断以下条件: 1)当前的dialog变量是否为空; 2)当前dialog所属的Activity是否isFinishing; 3)当前dialog是否已经在show中; 2.实例 1) private Dialog loginDialog; public void onCreateDialog() {
if (loginDialog == null) { //缺少判断 当前页面是否Activity,this.isFinishing
// 创建loginDialog
loginDialog= new Dialog(LoginActivity.this); // 创建自定义样式dialog
loginDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); View view=LayoutInflater.from(LoginActivity.this).inflate(R.layout.logining_dialog, null);
loginDialog.setContentView(view);
loginDialog.show();
} else { //缺少判断 当前页面是否Activity,this.isFinishing并且是否已经在显示
loginDialogshow();
}
}
这样会提示无法添加对话框到LoginActivity,虚拟机会提示我们 LoginActivity是否在running的错误。 2)上面的demo中在处理dialog显示的时候缺少了判断对当前页面是否Activity,this.isFinishing进行判断,只对dialog为空进行了处理。所以需要进行以下处理。 private Dialog loginDialog; public void onCreateDialog() {
if (loginDialog== null) { // 创建loginDialog
loginDialog= new Dialog(LoginActivity.this); // 创建自定义样式dialog
loginDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); View view=LayoutInflater.from(LoginActivity.this).inflate(R.layout.logining_dialog, null);
loginDialog.setContentView(view);
loginDialog.show();
} else { if(!isFinishing() && !loginDialog.isShowing()){ loginDialog.show();
} }
}
if (loginDialog == null) { //缺少判断 当前页面是否Activity,this.isFinishing
// 创建loginDialog
loginDialog= new Dialog(LoginActivity.this); // 创建自定义样式dialog
loginDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); View view=LayoutInflater.from(LoginActivity.this).inflate(R.layout.logining_dialog, null);
loginDialog.setContentView(view);
loginDialog.show();
} else { //缺少判断 当前页面是否Activity,this.isFinishing并且是否已经在显示
loginDialogshow();
}
}
这样会提示无法添加对话框到LoginActivity,虚拟机会提示我们 LoginActivity是否在running的错误。 2)上面的demo中在处理dialog显示的时候缺少了判断对当前页面是否Activity,this.isFinishing进行判断,只对dialog为空进行了处理。所以需要进行以下处理。 private Dialog loginDialog; public void onCreateDialog() {
if (loginDialog== null) { // 创建loginDialog
loginDialog= new Dialog(LoginActivity.this); // 创建自定义样式dialog
loginDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); View view=LayoutInflater.from(LoginActivity.this).inflate(R.layout.logining_dialog, null);
loginDialog.setContentView(view);
loginDialog.show();
} else { if(!isFinishing() && !loginDialog.isShowing()){ loginDialog.show();
} }
}
更多相关文章
- Notification 的开发指南
- 测试为Android模拟器创建和管理sdcard image文件
- 【精华】Android面试精华总结——Socket网络通信
- Android(安卓)如何获取 umeng 的 渠道信息
- Kotlin Android入门教程
- [android]数组资源
- Android(安卓)判断当前线程是否是主线程的两种方法
- ContentProvider的工作过程
- Android(安卓)对话框 (三)自定义对话框