Из всех поисков я нашел на SO о том, что вы должны сохранить состояние экземпляра в @Override public void onSaveInstanceState(Bundle outState)
Сохранение фрагментов экземпляра состояния между транзакциями
Однако этот тесно связан с образом жизни деятельности.
Как сохранить состояние моего списка в фрагменте, который будет заменен другим фрагментом. У меня есть одно основное действие, в которое загружаются все фрагменты.
Я попытался это до сих пор:
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
//Save adapter data so that when the fragment is returned to it can be resused.
ArrayList<CategoryMobileDto> categories = new ArrayList<CategoryMobileDto>();
for(int i=0; i < adapter.getCount();i++)
{
categories.add(adapter.getItem(i));
}
String persistData = new Gson().toJson(categories);
outState.putString("Categories", persistData);
}
, а затем в моем OnCreate();
if(savedInstanceState!=null)
{
String data =savedInstanceState.getString("Categories");
Type collectionType = new TypeToken<ArrayList<CategoryMobileDto>>() {
}.getType();
adapter.addAll(gson.<Collection<CategoryMobileDto>>fromJson(data, collectionType));
adapter.notifyDataSetChanged();
}else{
// Make request to server
}
однако savedInstanceState
всегда null. Но это имеет смысл, поскольку моя деятельность не разрушается и не воссоздается.
Это, как я переход от одного фрагмента к другому:
fragment.setArguments(args);
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.container, fragment, "ProductListFragment");
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
Есть ли способ я могу сохранить состояние моего ListView, когда фрагмент будет удален, а затем восстановить его снова, когда фрагмент извлекается из back-stack?
ли моя деятельность получить воссозданы каждый раз, когда я выгрузить фрагмент? – Zapnologica
Я рекомендую это решение для фрагмента. – droidd
Кажется не работает для меня. Сохраненный экземпляр всегда равен нулю. И '@Override public void onSaveInstanceState (Bundle outState)' не вызывается при замене фрагмента на другой? (только на экране вращаются). Все мысли. Я не могу каким-то образом связать его с фрагментатором? – Zapnologica