Android进度对话框错误如何解决?
Android progrees dialog error how to solve this?
我在 marshmallow 设备上遇到如下错误:但在 marshmallow OS 进度对话框下方工作正常。
错误如下:
E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference
at com.android.internal.app.AlertController.setupView(AlertController.java:489)
at com.android.internal.app.AlertController.installContent(AlertController.java:234)
at android.app.AlertDialog.onCreate(AlertDialog.java:423)
at android.app.ProgressDialog.onCreate(ProgressDialog.java:198)
at android.app.Dialog.dispatchOnCreate(Dialog.java:394)
at android.app.Dialog.show(Dialog.java:295)
我的进度对话框代码如下:
private void setUIToWait(boolean wait) {
if (wait) {
progressDialog=new ProgressDialog(LoginActivity.this);
progressDialog.setCancelable(false);
progressDialog.setCanceledOnTouchOutside(false);
progressDialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
progressDialog.show();
progressDialog.setContentView(new ProgressBar(LoginActivity.this));
} else {
progressDialog.dismiss();
}
}
我在上面的代码和我实际调用的异步任务中出错
protected void onPreExecute() {
setUIToWait(true);
}
我不知道出了什么问题.. 它在棉花糖上工作到周五,但现在每次当我的应用程序运行时它都会给我一个错误,并在 android 设备中使用进度对话框调用服务。 . 请仅在我的代码中建议我任何解决方案。因为我已经尝试了所有链接及其解决方案...
编辑:
如果我写下面的代码
private void setUIToWait(boolean wait) {
if (wait) {
if(progressDialog==null){
progressDialog=new ProgressDialog(LoginActivity.this);
progressDialog.setCancelable(false);
progressDialog.setCanceledOnTouchOutside(false);
progressDialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
progressDialog.show();
progressDialog.setContentView(new ProgressBar(LoginActivity.this));
}
} else {
progressDialog.dismiss();
}
}
然后它不会显示任何错误并执行成功但是 ProgressDialog 现在没有显示..
添加空值检查
else {
if( progressDialog != null)
progressDialog.dismiss();
}
使用此代码隐藏进度对话框:
else {
if (dialog != null) {
if (dialog.isShowing()) {
Context context = ((ContextWrapper)dialog.getContext()).getBaseContext();
if (context instanceof Activity) {
if (!((Activity) context).isFinishing())
dialog.dismiss();
} else
dialog.dismiss();
}
dialog = null;
}
}
我在 marshmallow 设备上遇到如下错误:但在 marshmallow OS 进度对话框下方工作正常。 错误如下:
E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference
at com.android.internal.app.AlertController.setupView(AlertController.java:489)
at com.android.internal.app.AlertController.installContent(AlertController.java:234)
at android.app.AlertDialog.onCreate(AlertDialog.java:423)
at android.app.ProgressDialog.onCreate(ProgressDialog.java:198)
at android.app.Dialog.dispatchOnCreate(Dialog.java:394)
at android.app.Dialog.show(Dialog.java:295)
我的进度对话框代码如下:
private void setUIToWait(boolean wait) {
if (wait) {
progressDialog=new ProgressDialog(LoginActivity.this);
progressDialog.setCancelable(false);
progressDialog.setCanceledOnTouchOutside(false);
progressDialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
progressDialog.show();
progressDialog.setContentView(new ProgressBar(LoginActivity.this));
} else {
progressDialog.dismiss();
}
}
我在上面的代码和我实际调用的异步任务中出错
protected void onPreExecute() {
setUIToWait(true);
}
我不知道出了什么问题.. 它在棉花糖上工作到周五,但现在每次当我的应用程序运行时它都会给我一个错误,并在 android 设备中使用进度对话框调用服务。 . 请仅在我的代码中建议我任何解决方案。因为我已经尝试了所有链接及其解决方案...
编辑:
如果我写下面的代码
private void setUIToWait(boolean wait) {
if (wait) {
if(progressDialog==null){
progressDialog=new ProgressDialog(LoginActivity.this);
progressDialog.setCancelable(false);
progressDialog.setCanceledOnTouchOutside(false);
progressDialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
progressDialog.show();
progressDialog.setContentView(new ProgressBar(LoginActivity.this));
}
} else {
progressDialog.dismiss();
}
}
然后它不会显示任何错误并执行成功但是 ProgressDialog 现在没有显示..
添加空值检查
else {
if( progressDialog != null)
progressDialog.dismiss();
}
使用此代码隐藏进度对话框:
else {
if (dialog != null) {
if (dialog.isShowing()) {
Context context = ((ContextWrapper)dialog.getContext()).getBaseContext();
if (context instanceof Activity) {
if (!((Activity) context).isFinishing())
dialog.dismiss();
} else
dialog.dismiss();
}
dialog = null;
}
}