Хранение данных во фрагменте при изменении активности

Я хотел бы разработать приложение на основе канала с таким же дизайном, как 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 - это решение.

Кроме того, существует дополнительный бонус сохранения состояний, даже если ваше приложение полностью уничтожено и должно быть перезапущено. Смотрите эту ТАКУЮ ветку.

Другие вопросы по тегам