从背面的tablayout片段返回旧片段

问题描述 投票:1回答:4

我有片段名称是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);
android fragment android-tablayout onbackpressed
4个回答
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();
    }

0
投票

你需要覆盖android onBackPressed方法:

@Override
    public void onBackPressed() {
        super.onBackPressed();
        //write your fragment switching code here.
    }

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();
        }

}


-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活动方法

第一步在ifcondition

我已检查是否选择Tab,而不是Tab 1

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

else if状态的第二步

我检查了选项卡1是否被选中

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

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

if else条件的第3步

写这个mViewPager.setCurrentItem(0);你将从Tab 1以外的任何Tab直接切换到Tab 1

这样做的目的是

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

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

实例是聊天,状态和通话的whatsapp选项卡

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.