Intereting Posts
Android.support.v4.app.FragmentPagerAdapter не может быть применен к android.app.FragmentManager Как использовать селекторы для изменения значков с помощью новой вкладки TabLayout Кнопка setText с Spannable не работает для Android 5.0 Lollipop Разработка приложения для Android в отдельных рабочих модулях Android TableRow RelativeLayout Issue Пользовательский вид Android ActionBar не заполняет родительский Android facebook sdk не вызывает обратный вызов после входа в систему Android: получить элементы из массива строк и показать их один за другим в текстовом режиме Кнопка Google Plus One показывает неправильный счет в приложении для Android (ошибка счетчика) Кодирование и декодирование byte с ZXing Android-запуск службы во время загрузки Ошибка @Override аннотации (андроидные prefs) Как центрировать текст в tabhost? Android: прослушиватель изменений подключения к Интернету Просмотр не подключен к оконному менеджеру (что такое решение?)

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

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

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

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

Использовать dialog.setCancelable(false);

Пример :

  ProgressDialog dialog = new ProgressDialog(WiFiFinderActivity.this); dialog.setMessage("please wait..."); dialog.show(); dialog.setCancelable(false); dialog.setCanceledOnTouchOutside(false); 

Вы не хотите использовать эту функцию переопределения. Вы только что установили

 final Dialog dialog=new Dialog(dialogactivity.this); dialog.setCancelable(false); dialog.setCanceledOnTouchOutside(false); 

Вы можете использовать эту строку

 dialog.setCanceledOnTouchOutside(false); 

или

 dialog.setCancelable(false); 

Согласно вашему требованию

Попробуйте 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.