Отображение первого фрагмента после возврата со следующей вкладки
Я использую ViewPager и вкладки. У меня есть 3 вкладки, и на первой вкладке (Tab_1) я переключаюсь с FragmentA на FragmentB. Затем я перехожу ко второй вкладке (Tab_2). После этого я возвращаюсь к Tab_1. На самом деле, это фрагмент B, который отображается, но я хочу, чтобы фрагмент A показывал, когда я возвращаюсь из Tab_2 в Tab_1. Я хочу иметь такое же поведение, когда в tab1 я переключаюсь с FragmentA на FragmentB, и если я перехожу к Tab_3 и возвращаюсь к Tab_1, это FragmentA, который показывает. Как я могу это сделать?
2 ответа
Ты пробовал SetCurrentItem(int i)
за ViewPager
по вызову OnResume()
В mainActivity добавьте метод addtoBackStack. Ниже приведен код.
Частный void loadfragment(Фрагмент фрагмента) {
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.frame, fragment);
fragmentTransaction.addToBackStack ("");
fragmentTransaction.commit();
}
public void onBackPressed() {
if (getFragmentManager().getBackStackEntryCount() > 0) {
getFragmentManager().popBackStackImmediate();
} else {
super.onBackPressed();
}
Вы можете создать baseFragment, который обрабатывает логику навигации при нажатии и расширяет этот фрагмент до вашего фрагмента.
public abstract class BackStackFragment extends Fragment {
public static boolean handleBackPressed(FragmentManager fm)
{
if(fm.getFragments() != null){
for(Fragment frag : fm.getFragments()){
if(frag != null && frag.isVisible() && frag instanceof BackStackFragment){
if(((BackStackFragment)frag).onBackPressed()){
return true;
}
}
}
}
return false;
}
protected boolean onBackPressed()
{
FragmentManager fm = getChildFragmentManager();
if(handleBackPressed(fm)){
return true;
} else if(getUserVisibleHint() && fm.getBackStackEntryCount() > 0){
fm.popBackStack();
return true;
}
return false;
}
}
https://medium.com/@nilan/separate-back-navigation-for-a-tabbed-view-pager-in-android-459859f607e4
В приведенной выше ссылке они объяснили, как обрабатывать табулирование и обратную навигацию таблообразования и изменять фрагмент на нажатой.