Переключение фрагмента с помощью нижнего навигационного контроллера без потери данных - PullRequest
2 голосов
/ 24 марта 2020

Я только начинаю разработку с Android. Первая проблема, с которой я сейчас сталкиваюсь, заключается в том, как сохранить данные фрагмента при переключении между фрагментами с помощью BottomNavigationController (автоматически сгенерированного Android Studio)

Я пытался использовать ViewModel, но с момента onDestroy ( ) вызывается каждый раз, когда при переключении данные также теряются. onSaveInstanceState () также не вызывается при переключении фрагмента.

Многие методы или решения, которые я видел в Интернете, используют устаревшие функции (так как я только начинающий, я понятия не имею, что такое новая функция используется прямо сейчас)

Я надеюсь, что кто-то может помочь мне в этом! Спасибо!

Ответы [ 2 ]

1 голос
/ 24 марта 2020

При изменении фрагмента он не уничтожается, а добавляется в backstack. Все переменные экземпляра остаются там. Вы можете получить данные в методе onActivityCreated. Вот пример:


public class ExampleFragment extends Fragment

 { 

private List<String> myData;

 @Override public void onSaveInstanceState(final Bundle outState)
 { 

super.onSaveInstanceState(outState);

 outState.putSerializable("list", (Serializable) myData); 

}

 @Override

 public void onActivityCreated(Bundle savedInstanceState)
 { 

super.onActivityCreated(savedInstanceState);

 if (savedInstanceState != null) { 

 myData = (List<String>) savedInstanceState.getSerializable("list"); } 

else { if (myData != null)

 { //returning from backstack} 

else 

{  myData = computeData(); } } } }

Редактировать: - Вы также можете использовать общие настройки. Пример: -


SharedPreferences shared ;

 shared = getSharedPreferences("prefs", Context.MODE_PRIVATE);
 shared.edit().putString("JSON",jsonString).commit(); 



Подробнее о хранении и получении данных с использованием общих настроек можно узнать здесь: https://www-geeksforgeeks-org.cdn.ampproject.org/v/s/www.geeksforgeeks.org/shared-preferences-in-android-with-examples/amp/?amp_js_v=a3&amp_gsa=1&usqp=mq331AQFKAGwASA%3D#aoh = 15850227567178 & referrer = https% 3A% 2F% 2F www.google.com&amp_tf=From%20%251%24s&ampshare=https%3A%2F%2Fwww.geeksforgeeks.org%2Fshared-preferences-in-android-with-examples%2F

0 голосов
/ 24 марта 2020

Если вы хотите не потерять данные, используйте ViewPager

(https://developer.android.com/training/animation/screen-slide)

Также посмотрите этот пример:

https://droidmentor.com/bottomnavigationview-with-viewpager-android/
...