Хранение данных во фрагменте при изменении активности
Я хотел бы разработать приложение на основе канала с таким же дизайном, как Facebook, Twitter или Instagram. На главном экране у меня есть FeedActivity, которая содержит ViewPager для хранения 3-4 фрагментов (представленных в виде вкладок)
FeedActivity
++ ListOfItemsFragment (there is a ListView holding posts)
++ OtherFragment
++ SomeOtherFragment
Я хотел бы открыть другое действие (или, может быть, другой фрагмент в ViewPager), когда пользователь касается сообщения (в списке в ListOfItemsFragment). Если я открою это новое действие (PostDetailActivity) и когда я вернусь к FeedActivity, все данные будут потеряны в ListOfItemsFragment, потому что FeedActivity создается снова.
Должен ли я создать новое действие для подробностей публикации или добавить другой фрагмент в FeedActivity независимо от ViewPager (я хочу, чтобы этот фрагмент был всплывающим, а не частью вкладок).
Как я могу поддержать это поведение?
Благодарю.
3 ответа
Каждый раз, когда вы нажимаете назад, создается новый экземпляр Activity. Заполненные Hense данные стираются. Просто введите следующие строки в файле манифеста.
<activity android:name=".MainActivity"
android:launchMode="singleTop">
</activity>
Просто переопределите этот метод и сохраните те данные, которые вы хотите отобразить снова
@Override
public void onSaveInstanceState(Bundle outState) {
outState.putInt("intTag", intValue); // Save all the value that you want to retain
super.onSaveInstanceState(outState, outPersistentState);
}
и у вас на OnCreate проверьте, не является ли значение sele ctedInstanceState не нулевым, чем получите значение и обновите ваш
if(savedInstanceState != null) {
int data = savedInstanceState.getInt("intTag");
// Retrieve all the data you have settled there
}
Если посмотреть на проблему с другой точки зрения, sqlite - это решение.
Кроме того, существует дополнительный бонус сохранения состояний, даже если ваше приложение полностью уничтожено и должно быть перезапущено. Смотрите эту ТАКУЮ ветку.