【问题标题】:Sharing NavigationView with all the Activities?与所有活动共享 NavigationView?
【发布时间】:2015-06-13 18:50:25
【问题描述】:

我们如何与所有活动分享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;
        ...
        }
        ...

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

相反,我希望每个 menuItem 选择/单击来调用 Activity。即每个MainMenuItem 都有Activity 并且它们将包含具有复杂布局的片段。

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

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

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

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

Following this new guide about Support Design lib

【问题讨论】:

  • 是的,您应该“将 NavigationView 添加到 BaseActivity,然后从那里扩展所有活动”

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


【解决方案1】:

我使用this SO answer找到了答案

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

【讨论】:

    【解决方案2】:

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

    public class NewActivity extends MainActivity{
         ...
    }
    

    但是,仅此一项并没有做任何事情。 MainActivity 有一个功能齐全的NavigationView,它将导航到每个活动。唯一剩下的就是与每个活动共享它。

    【讨论】:

    • 我也在BaseActivity中添加了导航代码,但后来感觉有些不对劲。由于每个扩展 BaseActivity 的 Activity 都会有冗余代码,并且每个 Activity 都将处理这些信息。我可能错了,但这是唯一的出路吗?
    • 父Activity应该实现NavigationView.OnNavigationItemSelectedListener接口,这样子Activity就会继承public boolean onNavigationItemSelected(MenuItem item)方法的菜单导航功能。
    猜你喜欢
    • 2010-12-10
    • 1970-01-01
    • 2017-07-31
    • 2012-09-08
    • 1970-01-01
    • 2022-06-23
    • 2021-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多