Sergio
Sergio

Reputation: 864

Navigation drawer, listen to item clicked events

I have this menu layout "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>

My main activity layout "activity_main.xml" is this:

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

And this is the Java code of the main activity where I initialize the drawer:

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

The drawer opens and closes correctly, but I don't know how to do something when an item is clicked, for example showing a log.

Does anyone know?

Thanks

Upvotes: 0

Views: 996

Answers (1)

Magesh Pandian
Magesh Pandian

Reputation: 9369

Use onNavigationItemSelected() method to handle Navigation Drawer Item Click. See Below Code.

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

Upvotes: 1

Related Questions