从背面的tablayout片段回到旧的fragmnet

时间:2017-06-01 09:05:41

标签: android fragment android-tablayout onbackpressed

我有片段名称是mainfragemnt在那个im再次调用fragmentsecond,它包含4个标签(e,p,t,s片段)和4个片段所以当我在标签片段中我想在背面按主要片段而不是当我在pfragemnt中的片段soncond im中没有发生任何事情.i.suppose。当我回来按我想进入主片段

    ViewPagerAdapter adapter = new ViewPagerAdapter(getChildFragmentManager());

    EFragment eFragment = new EFragment();
    eFragment.setArguments(bundle1);
    PFragment pFragment = new PFragment();
    pFragment.setArguments(bundle1);

    TFragment tFragment = new TFragment();
    tFragment.setArguments(bundle1);

    SFragment sFragment = new SFragment();
    sFragment.setArguments(bundle1);

    adapter.addFrag(eFragment, E_FRAGMENT);
    adapter.addFrag(pFragment, P_FRAGMENT);
    adapter.addFrag(tFragment, T_FRAGMENT);
    adapter.addFrag(sFragment, S_FRAGMENT);

    viewPager.setOffscreenPageLimit(3);
    viewPager.setAdapter(adapter);

4 个答案:

答案 0 :(得分:0)

在调用tabfragment时添加以下语句..

 FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
 transaction.add(R.id.Container, new TabFragment());
 transaction.addToBackStack("TabFragment");
 transaction.commit();

并在MainActivity中覆盖onBackPressed方法并写下面的语句..

    if (getSupportFragmentManager().getBackStackEntryCount() > 0){
        getSupportFragmentManager().popBackStack();
    } else {
        super.onBackPressed();
    }

答案 1 :(得分:0)

你需要覆盖android onBackPressed方法:

from sub1.cat import Cat

答案 2 :(得分:0)

我正在通过活动

进行处理
 onbackpress(){
Fragment second=  getSupportFragmentManager().findFragmentByTag("fragemntsecond");

   if (event != null && event.isVisible()) {


            mainfragment mainfragment = new mainfragment ();
            this.getSupportFragmentManager().beginTransaction()
                    .replace(R.id.frame, mainfragment , "mainfragment ")
                    .commit();
        }

}

答案 3 :(得分:-1)

看看这是否有帮助,您可以从选择的任何标签而不是标签1

转到标签1

我使用了Tab布局,并使用了ViewPager,

我在我的活动的onBackPressed方法中已经设置了tablayout

@Override
public void onBackPressed() {

private boolean doubleBackToExitPressedOnce = false;

    if (mViewPager.getCurrentItem() > 0) {
        //if any tab selected instead of tab 1
        mDoubleBackToExitPressedOnce = false;
    } else if (mViewPager.getCurrentItem() == 0) {
        //if tab 1 selected
        mDoubleBackToExitPressedOnce = true;
        if (mDoubleBackToExitPressedOnce)
            super.onBackPressed();
    }
    mViewPager.setCurrentItem(0);//go to tab 1
}

mViewPager是ViewPager的全局变量

mViewPager.getCurrentItem(),您将在ViewPager中选择当前标签 如果您通过单击选项卡滑动或选择任何选项卡,它将返回当前选项卡位置

无关紧要
  

<强>解释

onBackPressed活动方法

中的

  

if条件中的第一步

我已检查是否选择了Tab 1

以外的任何Tab

如果是,则将布尔值设置为false

  

else if条件中的第二步

我已检查是否选择了标签1

如果是,则将布尔值设置为true

然后在if条件中检查该布尔值是否为真,如果为真,则调用super.onBackPressed();

  

if else条件中的第3步

通过这个写mViewPager.setCurrentItem(0);,你将从任何标签直接切换到标签1,然后标签1

  

这样做的目的是

如果你在Tab 1之外的任何其他标签中,如果你按下手机中的后退按钮,将选择标签1

如果你在标签1中并按下手机中的后退按钮,则应用将关闭,即super.onBackPressed();将被调用

  

这是一个聊天,状态和通话的whatsapp标签的实例