Как избежать отклонения моего диалога прогресса, когда пользователь коснется экрана?
Я работаю над проектом Android, который отображает диалог прогресса, когда пользователь загружает файл.
Но когда пользователь коснется экрана, диалог прогресса отклоняется, не дожидаясь 100%.
Я уже пытался использовать это:
public boolean onTouchEvent(MotionEvent e) {
return true;
}
Но он не работает.
Как я могу избежать этого?
ОБНОВЛЕНИЕ 1:
Кажется, что setCancelable (false) отлично работает. Большое спасибо за ваши ответы, но когда загрузка длительная и пользователь решит отказаться от нее, это будет невозможно, потому что я уже отключил обратный keyCode:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
return true;
}
return super.onKeyDown(keyCode, event);
}
Как я могу это понять?
Ответы
Ответ 1
Используйте dialog.setCancelable(false);
Пример:
ProgressDialog dialog = new ProgressDialog(WiFiFinderActivity.this);
dialog.setMessage("please wait...");
dialog.show();
dialog.setCancelable(false);
dialog.setCanceledOnTouchOutside(false);
Ответ 2
Вы не хотите использовать эту функцию переопределения. Вы просто установили
final Dialog dialog=new Dialog(dialogactivity.this);
dialog.setCancelable(false);
dialog.setCanceledOnTouchOutside(false);
Ответ 3
Вы можете использовать эту строку
dialog.setCanceledOnTouchOutside(false);
или
dialog.setCancelable(false);
согласно вашему требованию
Ответ 4
Попробуйте myDialog.setCancelable(false);
. Я не уверен, что в диалоговом окне "Прогресс" этот метод аналогичен AertDialog, но может быть стоит попробовать.
Изменить (добавить для вашего обновления): Попробуйте использовать следующее:
myDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
//do your canceling stuff here
}
});
Также вы делаете это в AlertDialog или используете AlertDialog.Builder?
ЕСЛИ вы используете AlertDialog.Builder, вы должны использовать следующее:
AlertDialog myProgressDialog = myDialog.create();
myProgressDialog.show();
Затем вы можете использовать myProgressDialog.dismiss();
в своем NegativeButton onClick.
Ответ 5
Добавьте этот метод в диалог выполнения:
progressDialog.setCanceledOnTouchOutside(false);