Найти позицию активности в стеке действий - PullRequest
1 голос
/ 14 февраля 2011

В основном у меня сейчас два экрана.Экраны вопросов и ответов.Когда вы нажимаете на ответ, который, по вашему мнению, находится на экране вопроса, вы переходите к экрану ответа, чтобы сказать, были ли вы правы.Следующая часть с этого экрана, вы возвращаетесь к экрану вопросов, и вам задают другой вопрос.На данный момент это создает множество новых видов деятельности и может легко выйти из-под контроля.Что мне нужно, так это знать, когда вопросное задание завершается 3, и останавливать его.Обычно с экрана причины можно вернуться, чтобы просмотреть вопрос, но когда вы задаете новый вопрос, он должен удалить старую страницу и страницу причины.

Как мне это сделать?

Ответы [ 2 ]

1 голос
/ 14 февраля 2011

В ответном задании вы должны вызвать this.finish (), и это вернется к заданию вопроса.А в Деятельности Вопроса запустите AnswerActivity с startActivityForResult, чтобы Активность вопроса была уведомлена, когда Ответ закончен, чтобы вы могли показать новый Вопрос и т. Д. Таким образом, каждая Ответная активность будет уничтожена.Если вам нужна помощь с этим, опубликуйте пример кода.Если вы разрабатываете таким образом, вам не нужно находить Действия в стеке.

Вопрос Активность

this.startActivityForResult(Intent, requestCode); // somewhere in your code to launch the Answer Activity

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    // now we have returned from the AnswerActivity and it has been destroyed
    // do any processing here on the answer or show a new question.
}

Ответ Деятельность

public void onBackClick(View v) {
  //on click handler for a back button or something.
  this.setResult(resultCode, Intent /* some data to give back to parent */);
  this.finish();
}
0 голосов
/ 14 февраля 2011

Я не знаю, как сделать это напрямую из фреймворка, но вы можете сделать это вручную (я думаю).Вы можете вести список целых чисел на уровне приложения, представляющих идентификаторы задач действий с вопросом.Каждый раз, когда начинается действие, вы помещаете значение getTaskId () в этот список.В коде, запускающем действие, вы можете передать намерение, на которое отвечает вопрос.Если его значение getTaskId находится в определенной позиции в вашем списке, вы можете вызвать finish () для действия и удалить его идентификатор задачи из списка.

Это очень хакерское решение, но насколько яОпытный режим запуска SingleTop просто не работает

...