当前位置: 首页 > 知识库问答 >
问题:

NavigationView单击事件

谷梁波
2023-03-14

我正在使用android Studio模板中的android导航抽屉导航菜单。如何根据id导航到不同的活动。

DrawerLayout drawer = findViewById(R.id.drawer_layout);
        NavigationView navigationView = findViewById(R.id.nav_view);

        // Passing each menu ID as a set of Ids because each
        // menu should be considered as top level destinations.
        mAppBarConfiguration = new AppBarConfiguration.Builder(
                R.id.nav_home, R.id.nav_gallery, R.id.nav_slideshow,
                R.id.nav_tools, R.id.nav_share, R.id.nav_send)
                .setDrawerLayout(drawer)
                .build();
        NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
        NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
        NavigationUI.setupWithNavController(navigationView, navController);


  @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.admin_panel_navigation, menu);
        return true;
    }

    @Override
    public boolean onSupportNavigateUp() {
        NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
        return NavigationUI.navigateUp(navController, mAppBarConfiguration)
                || super.onSupportNavigateUp();
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
        return NavigationUI.onNavDestinationSelected(item, navController)
                || super.onOptionsItemSelected(item);
    }

@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
    // Handle navigation view item clicks here.
    switch (item.getItemId()) {

       case R.id.nav_maths: {
      //do somthing
            break;
        }  
    }
    //close navigation drawer
    mDrawerLayout.closeDrawer(GravityCompat.START);
    return true;
}

我知道我错过了什么,但我找不到解决办法。有人能帮我吗?

共有1个答案

西门洛城
2023-03-14

根据将目标绑定到菜单项部分,导航使用您添加到菜单xml中的ID,将它们与导航图xml文件中的目标匹配。

如果你有一个菜单项,比如

<item
    android:id="@+id/nav_maths"
    android:icon="@drawable/maths"
    android:title="@string/maths" />

并希望它开始不同的活动,您可以添加

<activity
    android:id="@+id/nav_maths"
    android:name="com.your.package.MathsActivity" />

因为它们具有相同的ID,所以当您单击菜单中的该项目时,您的活动将开始。

请注意,导航关注的是只有一个活动,因此活动目的地应该被视为您图形的退出点-您的第二个活动将有自己的导航图,等等。这与第一个活动完全不同。

 类似资料:
  • 问题内容: 我有一个id为id的按钮。我将此元素附加了两个jQuery事件 1。 2。 但是每次它给我 问题答案: 您需要使用超时来检查第一次点击后是否还有另一次点击。 这是窍门: 用法:

  • Extends Composite A widget that displays a stack of pages with a toolbar that allows to navigate back. The toolbar also displays the current page’s title and the highest priority actions that are adde

  • 本文向大家介绍Android NavigationView头部设置监听事件,包括了Android NavigationView头部设置监听事件的使用技巧和注意事项,需要的朋友参考一下 NavigationView头部设置监听事件的方法,供大家参考,具体内容如下 1、将XML里的静态引入删除: 2、在代码里 findViewById 找到 NavigationView,然后引入 Header 和 M

  • 当我在标记中单击时,警报消息是:未定义 但是如果我把它放在变量映射中,它就起作用了!(显示经纬度) 有人知道为什么它在标记器里不起作用吗?

  • 问题内容: 右键单击Javascript事件吗?如果可以,该如何使用? 问题答案: 正如其他人提到的那样,可以[通过常规鼠标事件(mousedown,mouseup,click)检测[鼠标右键。但是,如果在弹出右键单击菜单时正在寻找触发事件,那么您所寻找的位置是错误的。也可以通过键盘(在Windows和某些Linux上为shift + F10或上下文菜单键)访问右键单击/上下文菜单。在这种情况下,

  • 我正在尝试做一些非常简单的事情,在点击按钮时更改文本。 我似乎无法使用它,有人能告诉我添加ActionListener的正确位置吗? 主要类别 atmGUI类 编辑: 这是产生的错误 类型new ActionListener(){}必须实现继承的抽象方法ActionListener.actionPerform(ActionEvent)