Android progrees对话框错误如何解决这个问题?

时间:2016-08-30 05:03:07

标签: android android-6.0-marshmallow progressdialog

我在棉花糖设备上遇到如下错误:但在棉花糖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();
        }

    }

我在上面的代码和我的asynk任务中遇到错误,其中我实际上调用了

 protected void onPreExecute() {

            setUIToWait(true);
        }

我不知道问题是什么..它工作文件直到fri棉花糖,但现在每次它给我一个错误当我的应用程序运行和服务调用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 ..

2 个答案:

答案 0 :(得分:2)

使用此代码隐藏进度对话框:

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;
    }
}

答案 1 :(得分:1)

添加空检查

else {
           if( progressDialog != null) 
            progressDialog.dismiss();
        }