我使用ViewPager和Tabs。我有3个选项卡,在第一个选项卡(Tab_1)中,我从FragmentA切换到FragmentB。然后我转到第二个标签(Tab_2)。之后我回到了Tab_1。实际上,正在显示片段B,但是当我从Tab_2返回到Tab_1时,我想要片段A显示。我想在tab1中有相同的行为,我从FragmentA切换到FragmentB,如果我传递给Tab_3并返回到Tab_1,它就是正在显示的FragmentA。我怎么能这样做?
答案 0 :(得分:0)
您是否在SetCurrentItem(int i)
ViewPager
尝试了OnResume()
答案 1 :(得分:0)
在mainActivity
添加addtoBackStack
method.follow代码下方。
private void loadfragment(Fragment fragment) {
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();
}
答案 2 :(得分:0)
您可以创建一个baseFragment,该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
在上面的链接中,他们解释了如何处理tablayout和tablayout的向后导航以及如何在backpressed上更改片段