2015-08-26 2 views
1

Я пишу математическое приложение для маленьких детей, чтобы изучить математику. Сначала он предлагает пользователю выбрать, какие вопросы они хотят (MainActivity), а затем он показывает кучу вопросов (QuestionsActivity). Отвечая на 10 вопросов, он сообщает вам, какой вопрос (ы) вы ответили правильно, а какие нет (ResultsActivity).Как закончить() два действия одновременно?

Я знаю, что Android помещает все действия в стек. В моем случае, это будет выглядеть следующим образом:

ResultsActivity 
QuestionsActivity 
MainActivity 

И когда вы звоните finish, деятельность извлекается из стека. Я хочу, чтобы вернуться в главное меню в ResultsActivity, чтобы вернуться к MainActivity. Однако, если я позвоню finish в ResultsActivity, пользователь увидит QuestionsActivity! Итак, как я буду звонить finish по обоим мероприятиям?

ответ

4

два варианта:

  1. Вызов finish() в QuestionsActivity после выполнения вызова на запустите ResultsActivity. Это приведет к удалению из стека, так что нажатие назад из ResultsActivity вернется в MainActivity.
  2. Используйте Intent.FLAG_ACTIVITY_CLEAR_TOP в намерении вернуться к MainActivity. Это очистит все действия, которые над ним стоят.
+0

Да! Оно работает! Спасибо, Каракури! – Sweeper

3

Вы можете очистить стек простым начать свой MainActivity снова и очищая стек со следующими флагами:

final Intent intent = new Intent(context, MainActivity.class); 
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); 
    startActivity(intent); 
+2

Используйте [FLAG_ACTIVITY_CLEAR_TOP] (http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP) вместо того, чтобы начать новую задачу, как это более эффективно. –

+0

Спасибо, это приятно знать. :) – Christopher

+0

Но если пользователь нажмет кнопку «Назад» в приложении «Результаты», он все равно вернется к «Вопросам», верно? – Sweeper

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