2015-12-04 5 views
1

Я хотел бы создать приложение на основе корма с похожим дизайном, таким как 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 (я хочу, чтобы этот фрагмент был всплывающим, а не частью вкладок).

Как я могу поддержать это поведение?

Спасибо.

+0

Вы хотите, чтобы фрагмент был диалогом? –

+0

Я не уверен, что это лучший способ. Я новичок в разработке Android, решая, на каком шаблоне моя проблема :) – berkayk

+0

Очень интересный вопрос. если вы не возражаете против моего запроса, ваше приложение будет открытым исходным кодом или патентованным? UPVOTED :) –

ответ

1

Каждый раз, когда вы нажимаете назад, создается новый экземпляр Activity. Снимаемые данные заполняются. Просто введите следующие строки в файле манифеста.

<activity android:name=".MainActivity" 
     android:launchMode="singleTop"> 
</activity> 
+0

Спасибо, я думаю, это решило мою проблему. Я сталкиваюсь с ошибками памяти с этой настройкой? Это плохой дизайн? – berkayk

+1

1. В этой настройке не должно быть утечек памяти или ошибок. 2. Это лучший подход, если ваши представления обновляются через сетевой вызов. Это экономит много данных. И yep он заставляет пользователя вводить данные каждый раз, когда пользователь нажимает кнопку назад. –

0

Рассматривая проблему с другой точки зрения, sqlite является решением.

Плюс, есть дополнительный бонус сохранения состояний, даже если ваше приложение полностью уничтожено и его необходимо перезагрузить. См. this SO thread.

+0

Я использую mysql и php в качестве моего бэкэнда. Я действительно запутался в том, как отображать действия или фрагменты. – berkayk

+0

, что может стать проблемой в сельских районах с недостаточным/нерегулярным доступом в Интернет. вы можете пройти длительные периоды времени без достижения соединения и, таким образом, оставить приложение в фоновом режиме, при условии автоматического отключения ОС, в крайних случаях и/или сбоях. –

0

Просто переопределить этот метод и хранить эти данные, которые вы хотите отобразить снова

@Override 
public void onSaveInstanceState(Bundle outState) { 
    outState.putInt("intTag", intValue); // Save all the value that you want to retain 
    super.onSaveInstanceState(outState, outPersistentState); 
} 

и в вас OnCreate проверить, если savedInstanceState не равно нулю, чем получить значение и обновить

if(savedInstanceState != null) { 
    int data = savedInstanceState.getInt("intTag"); 
    // Retrieve all the data you have settled there 
} 
Смежные вопросы