Как сохранить состояние действия во время нажатия кнопки «Назад» и возврата к тому же действию - PullRequest
1 голос
/ 16 августа 2011

У меня есть вопрос, связанный с навигацией между различными действиями и onPause, и onRestore может решить проблему, но как это сделать, я не знаю.

Проблема в том, У меня есть следующие экраны в моем приложении

  1. HomeActivity - это экран приветствия
  2. CategoryActivity - здесь есть три категории, например Животные, растения и фрукты.
  3. QuestionsActivity - здесь каждый вопрос доступен в соответствии с выбором категории. В каждой категории 50 вопросов. В приложении есть вопросы с несколькими вариантами ответов.

Таким образом, процесс подачи заявки заключается в том, что когда пользователь приходит и выбирает категорию, я заполняю список из 50 вопросов из моего xml для этой категории, а затем отображаю эти вопросы один за другим на экране QuestionActivity. Здесь каждый раз, когда пользователь нажимает на категорию, я перетасовываю массив и покажи счет. то есть вы закончили 1 вопрос, вы завершили 2 вопроса и др.

Так что это что-то в моем приложении, а теперь проблема:

Предположим, пользователь находится в QuestionActivty, и он ответил на 5 вопросов, а затем нажал кнопку «Назад» на мобильном телефоне, чтобы он был перенаправлен на экран CategoryActivity. Теперь отсюда, если он снова нажимает на ту же категорию, он перенаправляется на экран QuestionActivity, но его вопросы начинаются с 1-го вопроса :(. В идеале он должен начинаться с 6-го вопроса, поскольку он уже ответил на 5 вопросов.

Может кто-нибудь помочь мне решить эту проблему? Если я сохраню счет, то он не будет работать для меня, так как каждый раз, когда я перетасовываю arraylist (таким образом, ответы на вопросы могут повторяться). Идеальное решение должно быть так: позволить Android управлять состоянием QuestionActivity во время нажатия кнопки «Назад» и возобновить то же состояние во время повторного выбора той же категории

.

Это должно быть распространенной проблемой, поэтому, если вы уже решили ее, пожалуйста, помогите мне.

Большое спасибо заранее, Ishan

Ответы [ 2 ]

0 голосов
/ 16 августа 2011

Почему бы не использовать StartActivityForResult ().Отправьте обратно int x = 5 обратно в CategoryActivity, а затем, когда вы возобновите QuestionActivity, вы можете отправить x обратно вместе с ним в дополнениях Bundle.Так что тогда QuestionActivity знает, что нужно начинать с 6-го (x + 1) вопроса.

Если вопросы упорядочены случайным образом, у вас возникнут проблемы, поскольку шестой вопрос может совпадать с первым пятью.Поэтому вместо того, чтобы отправлять только int x назад, отправьте целочисленный массив номеров вопросов, на которые уже дан ответ.

0 голосов
/ 16 августа 2011

Я бы посоветовал изучить возможность сохранения этих данных либо в базе данных SQLite, либо в файле SharedPreferences.Таким образом, вы можете записать, где ваш пользователь остановился, и представить следующие вопросы на основе значений в одном из этих механизмов хранения.

http://developer.android.com/guide/topics/data/data-storage.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...