2012-02-28 3 views
1

Я искал ответ, но не нашел подходящего. Вопрос в том, что у меня есть диалоговое тематическое действие поверх нормальной деятельности. Я хотел бы заставить пользователей либо прочитать, либо щелкнуть «ОК» для тематической деятельности, которая затем перенесет их в другую тематическую тему диалога для некоторых дополнительных вопросов или не сможет войти в приложение. Таким образом, я хотел бы выйти из приложения, на задний прессу, и не просто закончить тематическую деятельность, которая покажет содержимое моего приложения. Как это возможно?Выйти из приложения программно

+0

не могли бы вы объяснить, почему этот «диалог» не является реальным диалогом, а активен как диалог. Я уверен, что это даст нам лучшее понимание, поэтому мы вместе можем найти лучшее решение для вашего дела. Cheers – Ewoks

+0

Он полностью настроен и содержит множество функций, которые, насколько я помню, я не мог сделать в обычном диалоговом окне – JustCurious

+0

Oki .. Просто хотел лучше понять, чего вы пытаетесь достичь, потому что у сказал: «Я бы хотел чтобы заставить пользователей либо читать, либо «ОК» в тематическую деятельность или не может войти », что звучит для меня как повод для использования пользовательского диалога. Надеюсь, вы найдете решение, которое будет работать лучше всего для вас.Cheers – Ewoks

ответ

2

finish() сделает идеальную работу для вас;)

но сделать диалог не отменяемый ..

Edit (после описания проблемы осветления): Как другие отметили, что StartActivityForResult может работать с дополнительным трюка , Из-за того, как вы спроектировать свой App (DialogActivity1-> DialogActivity2), это может помочь добавить следующую строку в файл AndroidManifest, для всех специальных мероприятий диалогового просмотровых:

android:noHistory="true" или установить флаг намерения Intent.FLAG_ACTIVITY_NO_HISTORY перед запуском DialogActivityN.

Обе строки (из манифеста или кода) сделают эти действия не для того, чтобы оставаться в стеке Android, поэтому, когда ваш MainActivity получит результат, это будет результат последней DialogActivity, и, в зависимости от полученного результата, вы можете либо finish(), либо продолжить с выполнением MainActivity.

Когда вы начинаете такие действия, нет необходимости называть finish(), чтобы уничтожить их, u просто запустите новую активность, и они исчезнут из стека. Конечно, в вашем случае последний DialogActivity u начнется с StartActivityForResult(), и, как я объяснил в предыдущем параграфе, MainActivity сделает что-то на основе полученных результатов.

Однако, чтобы пользователь проходил эти диалоги несколько раз в начале приложения, не то, что я считаю хорошей практикой, и это может заставить вашего пользователя просто отказаться и пойти на какое-то менее раздражающее приложение. (Не поймите это неправильно, это просто мой совет переосмыслить о концепции)

Надеется, что вы будете решить;) Приветствий

+0

'finish()' завершает диалоговое тематическое действие, раскрывающее содержимое моего приложения. – JustCurious

+0

есть ли какая-то настоящая причина, по которой вы сделали это Activity (который выглядит как диалог), а не настоящий диалог ?! – Ewoks

2

Если начать диалог деятельности с startActivityForResult() вы можете отправить обратно результат RESULT_CANCELED из диалога, и после получения этого (в вашем основном действии) вы вызываете finish().

+0

Хорошая идея! Я попробую, что – JustCurious

+0

хорошо ... мой диалог на самом деле два выгруженных. Итак, есть 2 мероприятия. Я могу сделать это для первого, но как насчет следующего действия? – JustCurious

+0

В этом случае я, вероятно, использовал бы Фрагменты для достижения желаемого эффекта, но если это не вариант, вам нужно найти способ отправить значение обратно в первую активность, указав, было ли нажато «ОК» или нет. возможно, используя «SharedPreference», поскольку это также позволит вашему приложению запомнить, что пользователь выбрал в последний раз? – Jave

1

Если вы знаете о ActivityforResult, тогда вам будет проще, сначала вам нужно запустить активность диалога с помощью метода startActivityforResult ..., а затем, когда действие диалога закроется кнопкой «Назад», вам нужно закрыть его, задав результат. В OnactivityResult метод start-активности должен обнаруживать одно и то же и закрывать то же самое, если setResult не соответствует. Надеюсь, вы поняли.

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