Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 是否与所有活动共享NavigationView?_Android_Android Intent_Android Fragments_Navigationview_Android Support Design - Fatal编程技术网

Android 是否与所有活动共享NavigationView?

Android 是否与所有活动共享NavigationView?,android,android-intent,android-fragments,navigationview,android-support-design,Android,Android Intent,Android Fragments,Navigationview,Android Support Design,我们如何与所有活动共享Drawer 在setNavigationItemSelectedListener的列表器:onNavigationItemSelected中,我们可以获取id并导航到它。我要找的是这样的东西: private void initDrawerLayout() { drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); NavigationView navView = (Navi

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

setNavigationItemSelectedListener
的列表器:
onNavigationItemSelected
中,我们可以获取
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;
        ...
        }
        ...
我知道我可以制作所有的
菜单项
添加/替换
片段
,但是处理片段和内存管理是一件非常痛苦的事情

相反,我希望每个
菜单项
选择/单击以调用
活动
。i、 e.每个
main菜单项
都有
活动
,这些将包含布局复杂的片段

我只想让每个主菜单项都成为一个
活动
,而不是一个
片段

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

这是推荐的方式吗?还是我们总是为
NavigationDrawer
项目单击添加
片段

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


我在这里也有点困惑。在找到很少的信息后,我尝试扩展我的子类

public class NewActivity extends MainActivity{
     ...
}
然而,仅仅这一点并没有起到任何作用。
main活动
有一个功能齐全的
NavigationView
,可以导航到每个活动。剩下的就是与每个活动共享。

我使用


扩展是正确的方法。只需以正确的方式覆盖setContentView…

是的,您应该“将导航视图添加到BaseActivity,然后从那里扩展所有活动”我也在BaseActivity中添加了导航代码,但是感觉有些不对劲。由于扩展BaseActivity的每个活动都有冗余代码,因此每个活动都将处理此信息。在这一点上我可能错了,但这是唯一的出路吗?父活动应该实现
NavigationView.OnNavigationItemSelectedListener
接口,这样子活动将继承
公共布尔onNavigationItemSelected(MenuItem)
方法的菜单导航功能。