Làm sao để lưu lại dữ liệu của fragment khi chuyển qua fragment bất kì rồi quay lại vẫn còn dữ liệu ạ. Giống các ứng dụng fb, zalo...
Code trong phần chuyển fragment ạ
private BottomNavigationView bottomNavigationView;
Fragment fragmentCustomer = new customerFragment();
Fragment fragmentdestails = new DetailsFragment();
Fragment fragmentOther = new otherFragment();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menu);
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.main,fragmentCustomer).commit();
bottomNavigationView = (BottomNavigationView) findViewById(R.id.navigation);
bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
if(item.getItemId() == R.id.navigation_customer ) {
setFragment(fragmentCustomer);
return true;
}
else if(item.getItemId() == R.id.navigation_details ){
setFragment(fragmentdestails);
return true;
}
else{
setFragment(fragmentOther);
return true;
}
}
});
}
private void setFragment(Fragment fragment) {
FragmentManager fragmentManager = getSupportFragmentManager();
String backStateName = fragment.getClass().getName();
String fragmentTag=backStateName;
boolean fragmentPoped = fragmentManager.popBackStackImmediate(backStateName,0);
Log.e("fragmentPoped",fragmentPoped+"");
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
if(!fragmentPoped){
Log.e("Create fragment name",backStateName);
fragmentTransaction.replace(R.id.main,fragment,fragmentTag);
fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
fragmentTransaction.addToBackStack(backStateName);
fragmentTransaction.commit();
}else
Log.e("findFragmentByTag",fragmentManager.findFragmentByTag(fragmentTag)+"");
}
public void onBackPressed() {
if(getFragmentManager().getBackStackEntryCount() == 0) {
finish();
}
else{
Log.e("Count Stack",getFragmentManager().getBackStackEntryCount()+"");
super.onBackPressed();
}
}