Android 如何在导航视图中导航

Android 如何在导航视图中导航,android,navigation-drawer,android-navigationview,Android,Navigation Drawer,Android Navigationview,我已经实现了导航视图。而且它看起来又漂亮又漂亮。我正在我的主要活动中使用它,并且我正在为预先设计的原则工作 我到目前为止所做的事情 在创建新的项目手册时,我在Android Studio的帮助下创建了导航视图。因此,我用我的视图和字符串实现并更新了导航视图 现在,它的主要活动,它是工作良好。我在导航视图列表中有3个视图,即“工作日程”“关于我们”“设置” 这些是我可以点击进入其他活动的菜单 <menu xmlns:android="http://schemas.android.co

我已经实现了导航视图。而且它看起来又漂亮又漂亮。我正在我的主要活动中使用它,并且我正在为预先设计的原则工作

我到目前为止所做的事情

在创建新的项目手册时,我在Android Studio的帮助下创建了导航视图。因此,我用我的视图和字符串实现并更新了导航视图

现在,它的主要活动,它是工作良好。我在导航视图列表中有3个视图,即“工作日程”“关于我们”“设置”

这些是我可以点击进入其他活动的菜单

    <menu xmlns:android="http://schemas.android.com/apk/res/android">
    <group android:checkableBehavior="single">
        <item
            android:id="@+id/work"
            android:icon="@drawable/ic_sche"
            android:title="Work Schedule" />
        <item
            android:id="@+id/settings"
            android:icon="@drawable/ic_menu_gallery"
            android:title="Settings" />
        <item
            android:id="@+id/about_us"
            android:icon="@drawable/ic_menu_slideshow"
            android:title="About Us" />
        <item
            android:id="@+id/nav_tickets"
            android:icon="@drawable/ic_menu_slideshow"
            android:title="Tickets" />
         </group>

</menu>
所以我可以用这个方法处理点击

但是,如果我导航到其他活动,是否理解导航视图也会涵盖这些活动

  • 当我导航到其他视图/类时,该菜单应高亮显示

  • 我想当我点击导航视图中的菜单时,它应该以良好的过渡打开新的活动

  • 考虑

    第一点是我的困惑,也请澄清我如何在其他视图/活动之间导航

    以及如何记住您使用的菜单项


    请帮忙

    步骤1:在一个名为BaseActivity的单独活动中实现所有导航抽屉/视图工作内容

    步骤2:然后用这个基类扩展类


    据我所知,这是一个简单的方法

    我最近的项目也是从导航抽屉模板开始的。在我看来,你基本上有两个选择:

    A) 坚持使用MainActivity,您已经有了它,并通过显示不同的片段(向content_main.xml文件添加一个FrameLayout)来交换内容。这就是我所做的。如果您这样做,您根本不必担心导航抽屉,因为只有一个

    private void setFragment(Fragment fragment, String fragmentTag) {
            Log.d(TAG, "setFragment: " + fragmentTag);
            final FragmentTransaction transaction = getFragmentManager().beginTransaction();
            transaction.replace(R.id.content_frame, fragment, fragmentTag);
            transaction.addToBackStack(null);
            transaction.commit();
        }
    
    B) 您还可以像往常一样使用onNavigationItemSelected()方法启动许多新活动。IMHO每个活动都必须有自己的导航抽屉。我没试过,但打电话

    final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
    
        final DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        final ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        drawer.setDrawerListener(toggle);
        toggle.syncState();
    
    在每个onCreate()中,活动的方法都应该起作用。菜单中当前选中的项目应通过意向传递给活动

    干杯


    Matthias

    但是如果我必须用其他类来扩展该类,以实现该类的工作,例如Yourtube,因为我们需要用YouTube扩展活动,那么第二个解决方案是变通方法。所以没有直接的工作?我只选择解决方案A,因为解决方案B被认为是不好的做法,正如我在其他地方读到的。这是好的,但这样做还有另一个问题,那就是反压。你是什么意思?我还没有在我的应用程序中实现反压。你可以在这里看一看:看,我有3个片段的主要活动。我调用活动中的第一个片段,当应用程序启动时,导航菜单指示导航菜单中的第一项。但当我单击导航菜单中的第二个菜单时,它将替换主菜单中的第二个相关片段。现在,案例开始了,当我按下主活动中的上一个片段时,在这里,当您打开导航抽屉时,它仍然会指示突出显示的第二个片段/第二个项目。
    final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
    
        final DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        final ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        drawer.setDrawerListener(toggle);
        toggle.syncState();