Подтвердить что ты не робот

Как избежать отклонения моего диалога прогресса, когда пользователь коснется экрана?

Я работаю над проектом 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);
}

Как я могу это понять?

4b9b3361

Ответ 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);