2013-12-15 2 views
0

Я разрабатываю приложение, которое загружает некоторые данные в службу и показывает их с помощью push-уведомлений, а также пользователь может читать другие данные в действии. Так вы могли бы объяснить мне, как я могу сделать divalog, который является показом для пользователя, когда WIFI/3G выключен, и говорит что-то вроде этого: «Для нормальной работы приложения вы должны включить 3G/WIFI». Проблема заключается в том, что я должен выполнить ее посредством обратного вызова службы, то есть по этой логике:Как показать диалог в действии со службы?

начало службы загрузки данных -> Нет интернета -> Чеки, если WiFi/3G выключен -> Показывает в любой операции a Диалог ,

Я знаю, что могу сделать это с помощью ресивера, но как можно вызвать диалог в каждом действии? Или мне не нужна активность, просто контекст в методе OnReceive, правильно? Пожалуйста, дайте мне какие-нибудь идеи.

ответ

0

Или мне не нужна деятельность, просто контекст в методе OnReceive, правильно?

Нет, это неправильно. A Dialog нуждается в Activity. Вы можете показать Toast от onReceive(), используя Context, который у него есть.

Или, как предложил Юниор, вы можете создать Activity с помощью Dialog theme. Чтобы сделать это, вам нужно просто добавить следующую строку в <activity> тег в manifest.xml для соответствующего Activity

android:theme="@android:style/Theme.Dialog" 

Это хорошо, потому что это дает вам всю функциональность Activity при отображении как Dialog так пользователь не чувствует, что у него «осталось», где они есть.

+0

yeap это приятно, но это переопределит мой пользовательский стиль приложения. Что вы думаете об этом - создайте родительскую активность, которая содержит broadcastReceiver и метод, который показывает диалог, если активность теперь отображается на экране, и все действия, установленные для наследования этой родительской активности. – whizzzkey

+0

Вы можете создать отдельный «Активность» с помощью этой «темы» для вызова, когда вам нужно. Вы можете установить «макет», чтобы он имел свои пользовательские «стили» – codeMagic

+0

, и эта активность будет отображаться всегда, пока служба запущена, правильно? Я думаю, что это плохая идея, потому что моя служба STICKY, и эта активность будет раздражать пользователя. Я должен показать диалог только в том случае, если какая-либо активность активна. – whizzzkey

0

Запустите свою собственную деятельность с помощью темы диалога.

Надеюсь, это поможет!

+0

Что значит «Запустить действие с помощью темы диалога»? Я не понял. – whizzzkey

+0

Вы должны установить стиль действия в соответствии с типом диалога. Вы не можете запустить диалог из службы. Это будет похоже на активность, но с внешним видом диалога. Существуют такие системные темы, как Theme.Dialog (проверьте стили Holo на современных платформах), которые могут служить для этой цели. С уважением. –

+0

К сожалению, это переопределит мой пользовательский стиль приложения. – whizzzkey

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