Ошибка с диалогом прогресса
Я получил сообщение об ошибке на устройстве с маршмеллоу, как показано ниже: но ниже диалоговое окно прогресса ОС маршмеллоу работает нормально. Ошибка как следовать:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.perscitusSolutions.sherbet, PID: 2771
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 сейчас не отображается..
2 ответа
Добавить проверку на ноль
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;
}
}