Сохранение состояния fragment Android java
Работаю с BottomNavigationView, подключил, создал отдельно framgent, переключается - все ок, но есть проблема : в самом Fragment все время вызываются методы onCreateView и onViewCreated, у меня там находится RecyclerView и данные беру с сервера и при переключении на этот Fragment создается ощущения лага, тк все обновляется и каждый раз запрашивается с сервера. Можно как-то сохранить состояние ? что бы не каждый раз эти методы вызывались или мб есть другой метод, который вызывается лишь раз при создании ?
В главном активити :
public Fragment getCalendarFr(String tag){
CalendarCoachFragment fragmentDemo = (CalendarCoachFragment) getSupportFragmentManager().findFragmentByTag(tag);
if (fragmentDemo == null) {
return CalendarCoachFragment.newInstance();
}else{
return fragmentDemo;
}
}
public Fragment getClientsFr(String tag){
ClientsListCoachFragment fragmentDemo = (ClientsListCoachFragment) getSupportFragmentManager().findFragmentByTag(tag);
if (fragmentDemo == null) {
return ClientsListCoachFragment.newInstance();
}else{
return fragmentDemo;
}
}
void settings(){
BottomNavigationView.OnNavigationItemSelectedListener navigationItemSelectedListener = new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.navigation_calendar:
openFragment(getCalendarFr("CALFR"), "CALFR");
return true;
case R.id.navigation_clients:
openFragment(getClientsFr("CLINTFR"), "CLINTFR");
return true;
}
return false;
}
};
bottomNavigation.setOnNavigationItemSelectedListener(navigationItemSelectedListener);
}
public void openFragment(Fragment fragment, String tag) {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.content, fragment, tag);
transaction.addToBackStack(null);
transaction.commit();
}
пример Fragment
public static CalendarCoachFragment newInstance() {
CalendarCoachFragment fragment = new CalendarCoachFragment();
return fragment;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_calendar_coach, container, false);
return view ;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
recyclerView = view.findViewById(R.id.calendarRecyclerView);
//to-do
}