导航抽屉,监听item点击事件

Navigation drawer, listen to item clicked events

我有这个菜单布局"navigation_menu.xml":

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/item1"
        android:title="@string/item1"/>

    <item
        android:id="@+id/item2"
        android:title="@string/item2"/>

    <item
        android:id="@+id/item3"
        android:title="@string/item3"/>

</menu>

我的主要 activity 布局 "activity_main.xml" 是这样的:

<android.support.v4.widget.DrawerLayout
    android:id="@+id/drawer_layout"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    tools:context=".MainActivity">

    <android.support.design.widget.NavigationView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        app:menu="@menu/navigation_menu"
        android:layout_gravity="start">


    </android.support.design.widget.NavigationView>

</android.support.v4.widget.DrawerLayout>

这是 activity 主要的 Java 代码,我在其中初始化抽屉:

private DrawerLayout drawer_layout;
private ActionBarDrawerToggle toggle;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // ...
    drawer_layout = (DrawerLayout)findViewById(R.id.drawer_layout);
    toggle = new ActionBarDrawerToggle(this, drawer_layout, R
            .string.open_drawer, R.string.close_drawer);
    drawer_layout.addDrawerListener(toggle);
    toggle.syncState();
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    // ...
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (toggle.onOptionsItemSelected(item)) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}

抽屉可以正确打开和关闭,但是我不知道点击某个项目时如何做某事,例如显示日志。

有人知道吗?

谢谢

使用 onNavigationItemSelected() 方法处理 Navigation Drawer Item Click。请参阅下面的代码。

    private NavigationView mNavigationView;
    @Override
  protected void onCreate(Bundle savedInstanceState)
  {
    // ...
    mNavigationView = (NavigationView) findViewById(R.id.nav_view);
    mNavigationView.setNavigationItemSelectedListener(this);// you need to set Listener.
    }




 @SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item)
{
   // mDrawer.closeDrawer(GravityCompat.START);
    switch (item.getItemId()) {
        case R.id.item1: {

        }
        break;
        case R.id.item2: {

        }
        break;
        case R.id.item3: {

        }
        break;

    }
    return true;
}