Диалогты Қызметтен көрсету әдісі

Мен осы тақырып бойынша шын мәнінде көп посттар оқыдым, бірақ маған ештеңе де әсер етпейді (немесе маған әсер етпейді).

Менде фондық қызмет басталғаннан кейін (Сервис сыныбын енгізу) қосымшаның бар. Бұл қызмет Сервермен синхрондалады және жаңа тапсырыс пайда болса, ол хабарлама жасайды.

Осы уақытқа дейін бәрі керемет жұмыс істейді, хабарлама мен Тост хабарлары бар. Дегенмен, мен жаңа тапсырыс туралы пайдаланушыға хабарлайтын диалогты алғым келеді.

Түсіндіргенімдей, диалогты бейнелейтін қызметтегі қызметті бастауға болады. Бұл жұмыс істейді, бірақ белсенділік ағымдық әрекет стекінің үстінен басталады және диалогты көрсетеді. Менің көзқарасым жоқ белсенділік бар және ол қара фондық режимде диалогты дұрыс көрсетеді.

Мен қалаған нәрсе - ағымдық әрекеттегі диалогты көрсету, нақты фоны (іске қосылған әрекеттер) диалогты жоғарылату және көрсету.

Бұл мүмкін бе?

Рақмет сізге, Филип

42
қосылды автор araks, көзі

5 жауаптар

Қызмет диалогын жүйелік ескерту диалогы болған жағдайда ғана көрсете аламыз. Осылайша, TYPE_SYSTEM_ALERT терезе орналасуының параметрін Dialog-ге келесідей орнатыңыз:

dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);

Бірақ, SYSTEM_ALERT_WINDOW рұқсат қажет. Сондықтан, осы рұқсат құжатын Манифф файлына қосуды ұмытпаңыз.


104
қосылды
@ chakrapani бұл шеберлігімен жұмыс істеді, бірақ оны қалай жіберемін? Менің сұрағымды мына жерден қараңыз: http://stackoverflow.com/questions/21913249/unable-to-dismis‌ s -alertdialog
қосылды автор Lisa Anne, көзі
сіз жақсы көресіз, бұл қабылданған жауап болуы керек
қосылды автор Muhammed Refaat, көзі
Рахмет, менің мәселені шешті.
қосылды автор mh taqia, көзі
Бұл қабылданған жауап болмауы керек. Ескерту диалогтары тек ALERTS үшін! Бұл барлық қоңырауларға, тіпті телефон қоңыраулары мен батарея күйінің өзгеру диалогтарында да болады. Param system_alert функциясын қолдансаңыз, не істеп жатқаныңызды біліңіз.
қосылды автор JacksOnF1re, көзі
Жарайды, бұл туралы біз бұдан да дау жоқ. Егер сіз не істеп жатқаныңызды білсеңіз, бәрі жақсы. Бәлкім, бұл ескертпе жеткілікті еді және менің реакция қатаң болды.
қосылды автор JacksOnF1re, көзі
@deej Мен жауап бергім келмейді. Бірақ мен бұл нашар тәжірибе екенін және неге ол жауап болмауы керек екенін түсіндірмедім. Бұл жай ғана түсінікке тұрарлық.
қосылды автор JacksOnF1re, көзі
Сіз жаман бағдарламашылардың болуын қалайсыз ба? Өйткені бұл сіз жаман бағдарламашыларға айналады. «Ештеңе маңызды» - StackOverflow неге көшіру және қою кодының мысалы торабына көбірек ие болатынын түсіну. Өкінішті, бірақ шындық.
қосылды автор JacksOnF1re, көзі
Әдетте қалыпты түрде алынуы мүмкін рұқсатты талап ету фактісі дұрыс пайдаланбаудан қорғаудың өте жақсы жұмысын жасайды. Бұл заңды пайдалану.
қосылды автор Chris Stratton, көзі
Бұл сұраққа жауап ретінде жауапты болуы тиіс. Басқа ештене маңызды емес
қосылды автор deej, көзі
@ JacksOnF1re келісе алмайды. Ешкім сізді бір нәрсе нашар деп түсіндіруге шектеу қоймайды, бірақ шын мәнінде ол туралы ескерту болуы керек. Сұраққа жауап берсеңіз, онда бұл жаман және бұл блох-былай деп түсіндіреді. Ағымдағы жауап, бірақ уақытша шешімді қамтамасыз етеді. Және бұл жақсы, өйткені қосымша рұқсаттар қажет емес. Дегенмен, менің ойымша, алдымен мәселеге жауап беру керек.
қосылды автор deej, көзі
Ия, бірақ диалогтық батырманың стилі де өзгерді!
қосылды автор zionpi, көзі
Келіңіздер, елеулі: бұл дұрыс жауап :-) Thanx!
қосылды автор Yoraco Gonzales, көзі
@ JacksOnF1re кейде сізге барлық ескертулерді көрсету керек ... сыни ескерту секілді .. егер сіз дамитын бағдарлама төмен жады мониторының сервисінің біраз бөлігі болса және шын мәнінде есте сақтау қажет болса, ескерту қажет .. онда бұл жақсы имо
қосылды автор yeahman, көзі
Крис Страттон секілді ... рұқсаттың себебі бар.
қосылды автор yeahman, көзі
Мен үшін өте көп рахмет
қосылды автор Aayushi, көзі
TYPE_SYSTEM_ALERT Бұл тұрақты API-дегі 26-деңгейде ескірген. жүйелік емес қолданбалар үшін. Оның орнына TYPE_APPLICATION_OVERLAY қолданыңыз.
қосылды автор Shady Boshra, көзі

Мен жоғары, өте жоғары, ЖОҒАРЫМЫЗДЫҢ (бұл Android дизайны мен UI нұсқауларына сәйкес). Хабарландырулар - жасалып жатқан әрекеттерді орындаудың қолайлы тәсілі (ол сіз жасаған секілді).

Айтуынша, егер мұны істеу керек болса, мен тек Dialog тақырыптық қызметін пайдалануды ұсынамын. Осылайша жеке диалогты бастаудың қажеті жоқ. http://developer.android.com/guide/topics/ui/themes.html# қараңыз. ApplyATheme қолдануға болады.

40
қосылды
Мен бұған дейін жасаған нәрсем. Шын мәнінде, мысалы, қоңыраулар туралы хабарландыру қалай көрсетіледі? Сіз қандай әрекетке ие болмасаңыз, біреу сізге қоңырау шалған болса, қоңырауды қабылдағыңыз келсе немесе болмаса, диалогты аласыз. Ол сондай-ақ DialogTheme-тің белсенділігі ме? (Өкінішке орай, мен көздерде бұл туралы жалқау керек)
қосылды автор Filip Majernik, көзі
бұл шын мәнінде сұраққа жауап бермейді.
қосылды автор Vladyslav Matviienko, көзі
Жауап: бұл жасамаңыз. Егер сіз мұны жасайтын болсаңыз, диалог ретінде көрінетін тақырыпты бастаңыз. Тілқатысу сыныбын қызмет көрсетуге тырыспаңыз, өйткені ол сәтсіздікке ұшырайды.
қосылды автор Justin Breitfeller, көзі
Хабарламада түймені басу арқылы әрекетті бастау жақсы. Бірақ, бұл қызметтен диалог көрсету сияқты емес.
қосылды автор Justin Breitfeller, көзі
Мен мұны қалай істейтініне сенімді емеспін. Сіз басқа SO сұрағыңыз келмейді, бірақ менің жауабым сіздің проблемаңызды шешсе, оны қабылдауға шешімімнің жанындағы құсбелгіні қойыңыз.
қосылды автор Justin Breitfeller, көзі
Бұл үшін қолданылатын жағдай: Менде әрекет туралы хабарландыру бар. Әдетте, қолданушы әрекетті таңдаған кезде, ол қызметтің артқы жағында орындалады. Алайда кейде ескерту диалогы көрсетілуі керек.
қосылды автор Mark Gjøl, көзі
Жаңа қызметтегі диалог ағымдағы қызмет көрсетуге шақырылады onPause (), және егер осы қызмет үшін noHistory = true болса, бұл әрекет жойылады. Бұл сіз қалаған нәрсе емес. Бірақ қайтадан мүмкін. Тек осы мінез-құлықты біліңіз.
қосылды автор JohnyTex, көзі
Бірақ AlertDialog-ді сервистен көрсетудің техникалық мүмкіндігі бар ма?
қосылды автор Rahul Sundar, көзі

диалогқа ұқсас әрекетті қалай жасау керектігін үйрену арқылы бастауға болады (тақырып жолағы, мөлдір фон, «жүзу» әсері және т.б.) және ешқандай әрекетсіз диалогты бастай алмайсыз

4
қосылды
ұялмаңдар, біз сіз сияқты жақсы емеспіз ...
қосылды автор Jmorvan, көзі

Диалогты көрсете алмайсыз. Бірақ, белгілі бір шарттар орындалған кезде экранда тілқатысу терезесін көрсету үшін өзіңіздің бейімделетін көріністі толтырып, альтернатива жолына баруға болады.

1
қосылды

Жоқ, сіз «сіздің» емес әрекетті алып тастай алмайсыз және оны диалог көрсету үшін бұйырасыз. Сіздің жеке ісіңізді бастау тәсіліңіз классикалық.

0
қосылды