与所有活动共享NavigationView?

时间:2015-06-13 18:50:26

标签: android android-intent android-fragments navigationview android-support-design

我们如何与所有活动分享Drawer

onNavigationItemSelected的列表:setNavigationItemSelectedListener中,我们可以获取id并导航到它。我正在寻找的是这样的:

private void initDrawerLayout() {
    drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);

        NavigationView navView = (NavigationView) findViewById(R.id.navigation_view);
        navView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(MenuItem menuItem) {


        Intent intent;
        int id = menuItem.getItemId();

        switch(id) {

            case R.id.home:
            case R.id.drawer_home:
            // call activity instead of adding/replacing fragment
            return true;

            case R.id.drawer_gallery:
            // call activity instead of adding/replacing fragment
            intent = new Intent(MainActivity.this, GalleryActivity.class);
            startActivity(intent);
            return true;

            case R.id.drawer_about:
            // call activity instead of adding/replacing fragment
            intent = new Intent(MainActivity.this, AboutActivity.class);
            startActivity(intent);
            return true;
        ...
        }
        ...

我知道我可以使所有menuItems添加/替换Fragment,但是处理片段和内存管理是一件很大的痛苦。

相反,我希望每个menuItem选择/点击来调用Activity。即每个MainMenuItem都有Activity,这些将保留具有复杂布局的片段。

  

我想要做的就是让每个主菜单项都是Activity而不是a   Fragment

     

所有这些活动都可以共享DrawerNavigation

这是推荐的方式吗?或者我们总是为Fragments项目点击添加NavigationDrawer

我应该将NavigationView添加到BaseActivity然后从那里扩展所有活动吗?

Following this new guide about Support Design lib

2 个答案:

答案 0 :(得分:2)

我使用this SO answer

找到答案

延伸是正确的方法。只需以正确的方式覆盖setContentView ......

答案 1 :(得分:0)

我也有点困惑。在找到关于此的非常少的信息后,我试图扩展我的子类

public class NewActivity extends MainActivity{
     ...
}

然而,仅这一点并没有做任何事情。 MainActivity有一个功能齐全的NavigationView,可以导航到每个活动。剩下的就是与每个活动共享。