简体   繁体   English

onNavigationItemSelected 不适用于导航抽屉

[英]onNavigationItemSelected is not working on Navigation Drawer

I'm trying to get click event of Navigation Drawer item.我正在尝试获取导航抽屉项目的点击事件。 What I did is as below.我所做的如下。

(1) Create a new Android source project selecting 'Navigation Drawer Activity' on 'Select a Project Template'. (1) 创建一个新的 Android 源项目,在“选择项目模板”上选择“导航抽屉活动”。 (Min SDK : API 22 - Lollipop) (最小 SDK:API 22 - Lollipop)

(2) Add one item on '/res/menu/activity_main_drawer.xml'. (2) 在'/res/menu/activity_main_drawer.xml'中添加一项。

<group android:checkableBehavior="single">
    <item
        android:id="@+id/nav_home"
        android:icon="@drawable/ic_menu_camera"
        android:title="@string/menu_home" />
    <item
        android:id="@+id/nav_gallery"
        android:icon="@drawable/ic_menu_gallery"
        android:title="@string/menu_gallery" />
    <item
        android:id="@+id/nav_slideshow"
        android:icon="@drawable/ic_menu_slideshow"
        android:title="@string/menu_slideshow" />
</group>

<item
    android:id="@+id/menu_notification"
    android:icon="@drawable/ic_menu_slideshow"
    android:title="Notification" />

(3) MainActivity implements NavigationItemSelectedListener, and define event function - onNavigationItemSelected() (3) MainActivity实现NavigationItemSelectedListener,并定义事件函数-onNavigationItemSelected()

public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {公共类 MainActivity 扩展 AppCompatActivity 实现 NavigationView.OnNavigationItemSelectedListener {

@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
    int id = item.getItemId();
    if (id == R.id.menu_notification) {
        Toast.makeText(this, "Menu - Notification", Toast.LENGTH_SHORT).show();
    }
    return true;
}

(4) Set NavigationItemSelectedListener to MainActivity in onCreate() method. (4) 在 onCreate() 方法中将 NavigationItemSelectedListener 设置为 MainActivity。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    FloatingActionButton fab = findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();
        }
    });
    DrawerLayout drawer = findViewById(R.id.drawer_layout);
    NavigationView navigationView = findViewById(R.id.nav_view);
    navigationView.bringToFront();
    navigationView.setNavigationItemSelectedListener(this);
    mAppBarConfiguration = new AppBarConfiguration.Builder(
            R.id.nav_home, R.id.nav_gallery, R.id.nav_slideshow)
            .setDrawerLayout(drawer)
            .build();
    NavController navController = Navigation.findNavController(this,
        R.id.nav_host_fragment);
    NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
    NavigationUI.setupWithNavController(navigationView, navController);
}

This is all I did.这就是我所做的。 After run this application on Emulator, I clicked new menu item (Notification), but nothing happened.在模拟器上运行此应用程序后,我单击了新菜单项(通知),但没有任何反应。 onNavigationItemSelected() can not get event of item click. onNavigationItemSelected() 无法获取项目点击事件。

What I have to do to get click event of Navigation Drawer item?我必须做什么才能获得导航抽屉项目的点击事件?

The reason why this doesn't work is because you are using Navigation Component .这不起作用的原因是因为您正在使用Navigation Component If you want onNavigationItemSelected method to be called, remove the mentioned line below:如果要onNavigationItemSelected方法,请删除下面提到的行:

    NavigationUI.setupWithNavController(navigationView, navController);

After that, keep in mind that you should manage selected items manually as Navigation won't do it for you anymore.在那之后,请记住您应该手动管理所选项目,因为导航不再为您管理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 所有活动中的导航抽屉onNavigationItemSelected事件均不起作用 - Navigation Drawer in all activities onNavigationItemSelected event not working 导航抽屉 onNavigationItemSelected() 没有响应 - Navigation Drawer onNavigationItemSelected() not responding onNavigationItemSelected未在导航抽屉中调用 - onNavigationItemSelected not being called in Navigation Drawer 导航抽屉活动的 MainActivity 中不存在 onNavigationItemSelected() 函数 - onNavigationItemSelected() function not present in MainActivity of Navigation Drawer Activity Android在导航抽屉中的“ onNavigationItemSelected”上显示布局 - Android Showing Layout on 'onNavigationItemSelected' from Navigation Drawer 使用onNavigationItemSelected()在导航抽屉中切换片段 - Switching Fragments in navigation drawer using onNavigationItemSelected() Android 导航抽屉甚至没有调用公共 boolean onNavigationItemSelected 方法 - Android Navigation Drawer not even calling public boolean onNavigationItemSelected method 如何修复 Android studio 3.5 导航活动模板 onNavigationItemSelected 不起作用 - How to fix Android studio 3.5 navigation activity template onNavigationItemSelected not working 在新的导航抽屉活动模板中使用onNavigationItemSelected在片段之间切换(Android Studio 1.4以后) - Switch between Fragments with onNavigationItemSelected in new Navigation Drawer Activity template (Android Studio 1.4 onward) OnItemClickListener在导航抽屉中不起作用 - OnItemClickListener is not working in navigation drawer
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM