2012-10-04 3 views
0

У меня есть AlertDialog, когда я нахожу, что местоположение устройства изменилось. Это происходит практически в любое время, когда приложение сочтет нужным.AlertDialog утерян при запуске новой активности

Проблема в том, что если диалоговое окно появляется перед началом нового действия, диалог исчезает со старой Activity. Есть ли в любом случае, чтобы AlertDialog блокировал новые намерения? Или перевести на новую активность (можно ли обновить контекст)?

Я заметил, что AlertDialogs даже не обрабатывают случай, когда устройство вращается, поэтому моя надежда на это не слишком высока, но любой вход поможет.

+1

Вы правы, диалоги оповещений не могут справиться с этим, но тосты делают, поэтому, если вы не будете настаивать на использовании AlertDialog, вы можете использовать Toast. – Daniel

ответ

2

Я бы просто использовал настройку SharedPreference и проверял ее всякий раз, когда начинается потенциально прерывистая активность.

Ex;

  1. разделяемое значение предпочтения 1
  2. старта диалог
  3. , когда закончите, сохраните общее предпочтение 0
  4. если начинается деятельность и общие предпочтения 1, он прервал так начать диалог предупреждения. если он равен 0, переходите.

Опять же, AlertDialog предназначен для прикрепления к деятельности, так что вы действительно не можете остановить его от умирающей, если ваша предыдущая деятельность отодвигается или теряет фокус экрана (Ui нить в основном на удержание !)

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

Чтобы добавить то, что дал Daniel, пользовательские тосты может быть потрясающим. Они, однако, ограничены примерно 3,5 секундами (я думаю) Подробнее о пользовательских тостах; http://developer.android.com/guide/topics/ui/notifiers/toasts.html#CustomToastView

+0

Я определенно верю, что пользовательский Toast сделает это. И есть хаки, которые позволяют вам показывать тост дольше 3,5 секунд. – atreat

+0

В конце концов я решил изменить свой дизайн, чтобы «Действия» проверяли, нужно ли показывать диалог, а не пытаться создать глобальный диалог. Я думаю, что это соответствует дизайну платформы Android. – atreat

+0

Я рад, что вы нашли «правильное» решение вашей проблемы - иногда это трудно увидеть на Android, но всегда приятно видеть, что это происходит :) –

0

Ваш вопрос непонятен для меня. Поскольку я понял, что вам нужно показать Alertdialog, когда местоположение устройства будет изменено слишком над новым действием. Мое предположение заключается в том, что когда когда-либо изменения местоположения устройства получают значения потребности, свяжите его с намерением и передайте его, начиная с новой активности. С пакетом также передается логический флаг. Если в новом действии булевой флаг отображается в поле «Алертдиалог» в onCreate, я надеюсь, что вы получите то, что вы хотели. быть лучшим сценарием для вас сделать это, как я понял. Также сохранение истории этих действий может повлиять на приложение во время его реализации.

+0

Нет никакой активности, которая обрабатывает материал местоположения. В основном у меня есть параметр «Активность», который пользователь может выбрать «Авто» для настройки местоположения. Когда это происходит, диспетчер местоположений начинает прослушивать местоположение. У диспетчера местоположений есть контекст, который обновляется каждый раз, когда начинается действие. Когда менеджер находит местоположение, он использует этот контекст для отображения AlertDialog. Это может произойти в любое время.Поэтому, если приложение вот-вот изменит действия, Диалог появится в действии A, а затем будет уничтожен (наряду с действием A), когда начнется действие B. – atreat

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