导航抽屉,收听项目点击事件

时间:2016-11-13 15:15:11

标签: android navigation-drawer onclicklistener menuitem

我有这个菜单布局" 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>

我的主要活动布局&#34; activity_main.xml&#34;是这样的:

<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>

这是我初始化抽屉的主要活动的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);
}

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

有人知道吗?

由于

1 个答案:

答案 0 :(得分:1)

使用onNavigationItemSelected()方法处理导航抽屉项目单击。见下面的代码。

    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;
}