2010-07-30 4 views
3

В onCreate активности мы подключаемся к удаленной системе и загружаем данные. Все это время мы показываем отмененный ProgressDialog. Загрузка выполняется с использованием AsyncTask. В preExecute() мы показываем диалог, а в postExecute() мы его отклоняем.ProgressDialog исчезает при нажатии клавиши «Поиск» на телефоне

Проблема заключается в том, что при запуске загрузки и индикаторе ProgressDialog, если пользователь нажимает кнопку «Поиск» на устройстве, ProgressDialog исчезает. Фоновый поток все еще запущен.

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

Пожалуйста, помогите.

спасибо.

ответ

0

Это должно исправить это работает (заметьте, я положил его на конструкторе):

.setOnKeyListener(new DialogInterface.OnKeyListener() { 

    @Override 
    public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_SEARCH && event.getRepeatCount() == 0) { 
      return true; // Pretend we processed it 
     } 
     return false; // Any other keys are still processed as normal 
    } 
}) 

Может быть, это даже можно захватить положительные и отрицательные нажатия кнопок, и только обрабатывать эти, возвращает истину для любые другие ключи. Было бы интересно, если вы можете это понять ...

PS: Я читал, что в диалоговом окне есть больше «дыр», то есть вы можете избавиться от него, не нажимая никаких кнопок в самом диалоге. Это, по-видимому, одно. Кто-нибудь знает о других?

PS2: это, кажется, повторение Prevent ProgressDialog from being dismissed when I click the search button (Android)

+0

Я думал, что будет кратчайшим (например, какого-либо свойства) достижения этой цели. В любом случае, огромное спасибо! – Samuh

 Смежные вопросы

  • Нет связанных вопросов^_^