Вы можете найти множество информации о диалогах в интернете. Возможно я не открою Вам что-то новое, но все же написать об этом стоит. Дело в том, что недавно я столкнулся с проблемой. Она заключается в том, что когда я запускаю ProgressDialog во второй и последующие разы, он как будто зависает (Не крутиться прогресс-колесо). И более того не обновляется сообщение в нем! Использовал я стандартный код:
private static final int PROGRESS = 0;
@Override
protected Dialog onCreateDialog(int id) {
super.onCreateDialog(id);
switch (id) {
case PROGRESS:
ProgressDialog dialog = new ProgressDialog(this);
dialog.setTitle("Please, wait...");
dialog.setMessage(infoMsg);
dialog.setIndeterminate(true);
dialog.setCancelable(true);
return dialog;
default:
return null;
}
}
Немного поэкспериментировав, я нашел выход из этой ситуации. Вместо использования "стандартного" кода, я использовал следующий:
public void StartProgressDialog(String msg){
if(progressDialog==null) progressDialog = new ProgressDialog(this);
progressDialog.setTitle("Please, wait...");
progressDialog.setMessage(msg);
progressDialog.setIndeterminate(true);
progressDialog.setCancelable(true);
progressDialog.show();
}
И убираем его следующим образом:
public void StopProgressDialog(){
if(progressDialog!=null){
progressDialog.cancel();
progressDialog.dismiss();
progressDialog=null;
}
}
Таким образом прогресс диалог всегда с нужным вам сообщением и прогресс-колесо крутится! :-)
private static final int PROGRESS = 0;
@Override
protected Dialog onCreateDialog(int id) {
super.onCreateDialog(id);
switch (id) {
case PROGRESS:
ProgressDialog dialog = new ProgressDialog(this);
dialog.setTitle("Please, wait...");
dialog.setMessage(infoMsg);
dialog.setIndeterminate(true);
dialog.setCancelable(true);
return dialog;
default:
return null;
}
}
Немного поэкспериментировав, я нашел выход из этой ситуации. Вместо использования "стандартного" кода, я использовал следующий:
public void StartProgressDialog(String msg){
if(progressDialog==null) progressDialog = new ProgressDialog(this);
progressDialog.setTitle("Please, wait...");
progressDialog.setMessage(msg);
progressDialog.setIndeterminate(true);
progressDialog.setCancelable(true);
progressDialog.show();
}
И убираем его следующим образом:
public void StopProgressDialog(){
if(progressDialog!=null){
progressDialog.cancel();
progressDialog.dismiss();
progressDialog=null;
}
}
Таким образом прогресс диалог всегда с нужным вам сообщением и прогресс-колесо крутится! :-)
Комментариев нет:
Отправить комментарий