导航抽屉片段

ZWis212

因此,我有5种不同选择的导航抽屉。他们都打开了我创建的新片段。第一个是Home,我正在尝试找到一种方法将其带回到导航抽屉下面显示的第一个屏幕。在main_activity.xml中,它的ID为“容器”。我不想使用并且打算再次调用整个类来进行加载。我也不想从另一个目的使用后退按钮。我对如何实现这一目标感到困惑。

 @Override
public void onNavigationDrawerItemSelected(int position) {

    FragmentHowItWorks fragmentHow;
    FragmentSettings fragmentSettings;
    FragmentTransaction transaction = getFragmentManager().beginTransaction();

    switch(position){
        case 0:

                // should I call the layout?
                // this is the "Home" option

            break;
        case 1:
            fragmentHow = new FragmentHowItWorks();
            transaction.replace(R.id.container, fragmentHow);
            transaction.addToBackStack(null);
            transaction.commit();
            break;
        case 2:
            fragmentSettings = new FragmentSettings();
            transaction.replace(R.id.container, fragmentSettings);
            transaction.addToBackStack(null);
            transaction.commit();
            break
        case 3:
            fragment = new FragmentHowItWorks();
            transaction.replace(R.id.container, fragment);
            transaction.addToBackStack(null);
            transaction.commit();
              break;
        case 4:
              fragment = new FragmentHowItWorks();
              transaction.replace(R.id.container, fragment);
              transaction.addToBackStack(null);
              transaction.commit();
              break;
    }
}
好吃

使用方法addhide并且show

步骤1准备所有片段

Fragment fragment1 = new FragmentOne();
Fragment fragment2 = new FragmentTwo();
Fragment fragment3 = new FragmentThree();
Fragment mCurrentFragment = null;

步骤2显示/隐藏片段

@Override
public void onNavigationDrawerItemSelected(int position) {
    Fragment fragment;
    switch (position) {
    case 1:
        fragment = fragment1;
        break;
    case 2:
        fragment = fragment2;
        break;
    case 3:
        fragment = fragment3;
        break;
    }
    FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    if(mCurrentFragment == null) {
        ft.add(R.id.container, fragment).commit();
        mCurrentFragment = fragment;
    } else if(fragment.isAdded()) {
        ft.hide(mCurrentFragment).show(fragment).commit();
    } else {
        ft.hide(mCurrentFragment).add(R.id.container, fragment).commit();
    }
    mCurrentFragment = fragment;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章