处理导航抽屉内部

时间:2014-10-02 15:01:29

标签: android android-fragments

我有一个基于Android文档中example的导航抽屉。

当您打开导航栏时,它会在抽屉内显示MainMenuFragment。选择菜单项时,它会用SubMenuFragment替换抽屉内的片段。这对后退按钮的效果很好。

按后退按钮始终关闭抽屉,但我想使用后退按钮在MainMenuFragment显示时在抽屉中显示SubMenuFragment。如何处理导航抽屉内的后退按钮以替换抽屉内显示的碎片。

更换抽屉内的碎片不是问题所在。我无法弄清楚如何停止后退按钮关闭抽屉并让它显示MainMenuFragment

我的主要活动XML(缩写):

<android.support.v4.widget.DrawerLayout ....>
    <FrameLayout android:id="@+id/container" .../>
    <FrameLayout android:id="@+id/drawer" android:layout_gravity="start" .../>
</android.support.v4.widget.DrawerLayout>

和我班级的相关部分:

public class MainActivity extends Activity {
    ...
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getFragmentManager().beginTransaction()
            .replace(R.id.drawer, new MainMenuFragment()).commit();

        // setup DrawerLayout and ActionBarDrawerToggle
        ...
    }

    private void showSubMenu() {
        getFragmentManager().beginTransaction()
            .replace(R.id.drawer, new SubMenuFragment()).commit();
    }
}

1 个答案:

答案 0 :(得分:1)

我之前在不同情况下使用的是将片段添加到Fragment BackStack。

所以当更改片段时首先将它添加到后栈。

getFragmentManager().beginTransaction()
        .replace(R.id.drawer, new MainMenuFragment()).addToBackStack(null).commit();

处理时请执行以下操作。

int count = getSupportFragmentManager().getBackStackEntryCount();

if(count > 1)
        getSupportFragmentManager().popBackStack();

试试这个,看它是否有效。

同时检查一下:http://developer.android.com/training/implementing-navigation/temporal.html#back-fragments

相关问题