Как сохранить состояние действия во время нажатия кнопки «Назад» и возврата к тому же действию

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

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

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

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

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

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

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

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

Заранее спасибо, Ишан


person Ishan    schedule 16.08.2011    source источник


Ответы (2)


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

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

person Community    schedule 16.08.2011

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

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

person hooked82    schedule 16.08.2011
comment
Привет, большое спасибо за ответ, но я хочу перемешивать вопросы случайным образом каждый раз, когда приходит пользователь. так что здесь мой запрос больше связан с интерфейсом, чем с сервером. - person Ishan; 16.08.2011