0

I have created the sidebar navigation in my app. Now I want to create a click event on that.

I have searched for it and I got the documentation but I'm unable to understand the same.

so please anyone can suggest a better source for it will be helpful. tutorial on youtube will be helpful.

My navigation_menu

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/nav_account"
        android:icon="@mipmap/ic_person_black_24dp"
        android:title="My Account"/>

    <item android:id="@+id/nav_setting"
        android:icon="@mipmap/ic_settings_black_24dp"
        android:title="Settings"/>

    <item android:id="@+id/nav_logout"
        android:icon="@mipmap/ic_logout_black_24dp"
        android:title="Logout"/>
    </menu>

My activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.lenovo.jdstudio.MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <include
            layout="@layout/navigation_action"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

        <TextView
            android:id="@+id/textView2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Main Layout"
            android:textAlignment="center"
            android:textSize="24dp" />
    </LinearLayout>

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

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

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

1 Answers1

0

Simply implement NavigationView.OnNavigationItemSelectedListener interface and then override the method onNavigationItemSelected(MenuItem menuItem) like the following:

public class MainActivity extends AppCompatActivity implements
    NavigationView.OnNavigationItemSelectedListener{

    NavigationView navigationView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // declaring the NavigationView
        navigationView = (NavigationView) findViewById(R.id.navigationView);
        // assigning the listener to the NavigationView
        navigationView.setNavigationItemSelectedListener(this);
    }

    @Override
    public boolean onNavigationItemSelected(MenuItem menuItem) {

        menuItem.setChecked(true);

        switch (menuItem.getItemId()) {
            case R.id.nav_account:
                // do you click actions for the first selection
                break;
            case R.id.nav_setting:
                // do you click actions for the second selection
                break;
            case R.id.nav_logout:
                // do you click actions for the third selection
                break;
        }

        return true;
    }

}

And for sure don't forget to give id to the NavigationView in your xml-layout:

<android.support.design.widget.NavigationView
    android:id="@+id/navigationView"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    app:headerLayout="@layout/navigation_header"
    app:menu="@menu/navigation_menu">

</android.support.design.widget.NavigationView>
Muhammed Refaat
  • 8,914
  • 14
  • 83
  • 118
  • Should i create a fragment or new activity . which is better? –  Dec 25 '17 at 07:12
  • If you are talking about the NavigationDrawer holder for sure it should be an Activity, but if you are talking about the pages that the NavigationDrawer will redirect to, they should be fragmentsw so that you will have the same NavigationDrawer in all of the pages with the same functionality without the need to recreate it in every Activity. – Muhammed Refaat Dec 25 '17 at 10:34
  • Thanks for the help –  Dec 25 '17 at 10:44
  • 1
    https://stackoverflow.com/questions/47967935/how-to-edit-the-color-xml-in-androidstudio-3-0-1 –  Dec 25 '17 at 10:56
  • 1
    can you please look to this question . It will be help full –  Dec 25 '17 at 10:57