2015-06-11 2 views
3

Я создаю приложение простого опроса в андроид-студии. У меня есть несколько намерений, и я запускаю каждый, когда нажимаются кнопки «Далее». У меня также есть кнопка «назад», которая приводит пользователя к предыдущему намерению, если они хотят изменить ответ на вопрос. Когда я снова пойду вперед, ни один из ответов не будет сохранен. Как я могу получить ответы на все ответы пользователей?Сохранение данных о намерениях в android

+3

Сохраните данные, хранящиеся в полях в методе обратного вызова 'onPause'. – EpicPandaForce

+0

См. Http://developer.android.com/training/basics/data-storage/index.html – RvdK

ответ

0

Как насчет использования класса singleton для ваших данных и сохранения его там в списке или массиве. Вы можете расширить класс Application для этого или просто создать собственный класс singleton.

+0

Когда приложение будет убито, в то время как в фоновом режиме эти данные будут потеряны –

+0

Извините, но есть лучшие варианты, предоставляемые самим Android , – RvdK

+0

y хорошо, что я не сказал, что это лучше всего, также сохраняя данные в базе данных, в то время как действия по переключению являются простыми базовыми ... так что я думал, что часть была ясной. – BooNonMooN

3

Есть два способа, которые можно переопределить в своей деятельности:

public void onSaveInstanceState(Bundle savedInstanceState); 
public void onRestoreInstanceState(Bundle savedInstanceState); 

Как вы видите, у вас есть доступ к Bundle «savedInstanceState». Если пользователь прекращает действие onSaveInstanceState() получает вызов, и у вас есть возможность сохранять данные, которые вы хотите восстановить позже.

Метод onRestoreInstanceState() только вызывается, если вы сохранили информацию в onSaveInstanceState() и предлагает Вам возможность восстановить эти данные. Он предоставляет набор, который содержит те же данные, которые вы сохранили в данных во время onSaveInstanceState().

Пакет в основном представляет собой ключ-значение. Для того, чтобы сохранить строку, например, вы бы просто называть putString() -метода расслоения:

savedInstanceState.putString("myKey", "Hello World"); 

Есть много типов данных, которые можно хранить в пачке (в общем, каждый класс, который реализует интерфейс Parcelable может храниться в комплекте).

Дополнительная информация:

http://developer.android.com/training/basics/activity-lifecycle/recreating.html http://developer.android.com/reference/android/os/Bundle.html

+0

Я хочу, чтобы ответы на опрос были физически сохранены, поэтому, когда пользователь проверяет флажки или вводит в editText им не нужно повторять опрос. Есть ли способ сделать это? – jmc

-1

Вы можете реализовать одноэлементный класс и использовать его в своем приложении, которое расширяет Приложение. Храните данные в одиночном режиме по карте и предоставляйте методы получения и установки

+0

Одноэлементный класс может быть плохой подход, потому что это глобальное состояние, которое может быть трудно проверить. Другое дело, что ваш синглтон недоступен, если андроид убивает приложение, потому что он находится в фоновом режиме в течение более длительного времени. –

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