Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Side Navigation Drawer Item click not working

Tags:

PLEASE READ FIRST BEFORE ANYONE MARK IT AS DUPLICATE QUESTION BECAUSE IT IS NOT.

I have used Navigation Drawer, Bottom Navigation bar and a custom Action bar.

Bottom navigation bar and action bar are working fine. navigation drawer also shows menu present under it but the items are not clickable.

I have tried all the answers related to

navigation drawer item click not working

but still my problem has not been solved yet. there is no error in the debug section.

Image of output

Image of output

Dashboard Activity

package com.vicky.sampleApp; import android.content.Intent; import android.os.Build; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.RequiresApi; import android.support.design.widget.BottomNavigationView; import android.support.design.widget.NavigationView; import android.support.v4.app.Fragment; import android.support.v4.view.GravityCompat; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.AppCompatActivity; import android.view.Gravity; import android.view.MenuItem; import android.view.View; import android.widget.TextView; import android.widget.Toast; import android.support.v7.widget.Toolbar;  public class Dashboard extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {     //android.app.ActionBar actionbar;     TextView textview;     TextView textviewTitle;     private ActionBar toolbar;     private DrawerLayout drawer;     private ActionBarDrawerToggle toggle;      @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)     @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.dashboard);          Toolbar toolbar1 = (Toolbar) findViewById(R.id.toolbar);         setSupportActionBar(toolbar1);          setActionBarText("HomePage");           drawer = (DrawerLayout) findViewById(R.id.drawer_layout);          toggle = new ActionBarDrawerToggle(                 this, drawer, toolbar1, R.string.navigation_drawer_open, R.string.navigation_drawer_close);         drawer.bringToFront();         drawer.addDrawerListener(toggle);         toggle.syncState();          NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);         navigationView.setNavigationItemSelectedListener(this);          toolbar = getSupportActionBar();          BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.bottomNavigationView);         navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);        }       private void setActionBarText(String text){     toolbar = getSupportActionBar();     toolbar.setBackgroundDrawable(getResources().getDrawable(R.drawable.default_appbar_theme));//line under the action bar     View viewActionBar = getLayoutInflater().inflate(R.layout.actionbar_title_text_layout, null);     ActionBar.LayoutParams params = new ActionBar.LayoutParams(//Center the textview in the ActionBar !             ActionBar.LayoutParams.WRAP_CONTENT,             ActionBar.LayoutParams.MATCH_PARENT,             Gravity.CENTER);     textviewTitle = (TextView) viewActionBar.findViewById(R.id.actionbar_textview);     textviewTitle.setText(text);     toolbar.setCustomView(viewActionBar, params);     toolbar.setDisplayShowCustomEnabled(true);     toolbar.setDisplayShowTitleEnabled(false);     toolbar.setHomeButtonEnabled(true); } /* private NavigationView.OnNavigationItemSelectedListener mSideNavigationItemSelectedListener         = new NavigationView.OnNavigationItemSelectedListener() {     @Override     public boolean onNavigationItemSelected(@NonNull MenuItem item) {         switch(item.getItemId()){             case R.id.nav_camera:                 Toast.makeText(Dashboard.this, "Camera", Toast.LENGTH_SHORT).show();                 Intent intent = new Intent(Dashboard.this,AboutUs.class);                 startActivity(intent);                 break;             case R.id.nav_gallery:                 Toast.makeText(Dashboard.this, "Gallery", Toast.LENGTH_SHORT).show();                 break;             case R.id.nav_slideshow:                 Toast.makeText(Dashboard.this, "Slideshow", Toast.LENGTH_SHORT).show();                 break;             case R.id.nav_manage:                 Toast.makeText(Dashboard.this, "Slideshow", Toast.LENGTH_SHORT).show();                 break;             case R.id.nav_share:                 Toast.makeText(Dashboard.this, "Nav_share", Toast.LENGTH_SHORT).show();                 break;             case R.id.nav_send:                 Toast.makeText(Dashboard.this, "nav_send", Toast.LENGTH_SHORT).show();                 break;         }         drawer.closeDrawer(GravityCompat.START);         return true;     } }; */     private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener             = new BottomNavigationView.OnNavigationItemSelectedListener() {          @Override         public boolean onNavigationItemSelected(@NonNull MenuItem item) {             Fragment fragment;             switch (item.getItemId()) {                 case R.id.navigation_home:                     setActionBarText("Home");                     return true;                 case R.id.navigation_appointments:                     setActionBarText("Appointments");                     return true;                 case R.id.navigation_category:                     setActionBarText("Category");                     return true;                 case R.id.navigation_profile:                     setActionBarText("Profile");                     return true;             }             return false;         }     };      @Override     public boolean onNavigationItemSelected(@NonNull MenuItem item) {         // Handle navigation view item clicks here.         int id = item.getItemId();          if (id == R.id.nav_camera) {             Toast.makeText(this, "Camera", Toast.LENGTH_SHORT).show();             Intent intent = new Intent(this,AboutUs.class);             startActivity(intent);         } else if (id == R.id.nav_gallery) {             Toast.makeText(this, "Gallery", Toast.LENGTH_SHORT).show();         } else if (id == R.id.nav_slideshow) {             Toast.makeText(this, "Slideshow", Toast.LENGTH_SHORT).show();         } else if (id == R.id.nav_manage) {             Toast.makeText(this, "Nav_manage", Toast.LENGTH_SHORT).show();         } else if (id == R.id.nav_share) {             Toast.makeText(this, "Nav_share", Toast.LENGTH_SHORT).show();         } else if (id == R.id.nav_send) {             Toast.makeText(this, "nav_send", Toast.LENGTH_SHORT).show();         }          DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);         drawer.closeDrawer(GravityCompat.START);         return true;     }  } 

dashboard.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"     android:fitsSystemWindows="true"     tools:openDrawer="start">      <android.support.design.widget.NavigationView         android:id="@+id/nav_view"         android:layout_width="wrap_content"         android:layout_height="match_parent"         android:layout_gravity="start"         android:fitsSystemWindows="true"         app:headerLayout="@layout/nav_header_main"         app:menu="@menu/activity_main_drawer" />      <FrameLayout         android:layout_width="match_parent"         android:layout_height="match_parent">          <android.support.design.widget.AppBarLayout             android:layout_width="match_parent"             android:layout_height="wrap_content"             android:theme="@style/CustomTheme.AppBarOverlay">              <android.support.v7.widget.Toolbar                 android:id="@+id/toolbar"                 android:layout_width="match_parent"                 android:layout_height="?attr/actionBarSize"                 android:background="?attr/colorPrimary"                 app:popupTheme="@style/CustomTheme.PopupOverlay" />          </android.support.design.widget.AppBarLayout>          <android.support.design.widget.BottomNavigationView             android:id="@+id/bottomNavigationView"             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:background="?android:attr/windowBackground"             app:layout_constraintBottom_toBottomOf="parent"             app:layout_constraintLeft_toLeftOf="parent"             app:layout_constraintRight_toRightOf="parent"             app:labelVisibilityMode="labeled"             app:itemBackground="@color/colorPrimary"             android:layout_gravity="bottom"             app:itemIconTint="@drawable/selector_bottom_nav_bar"             app:itemTextColor="@drawable/selector_bottom_nav_bar"             app:menu="@menu/navigation"/>      </FrameLayout>  </android.support.v4.widget.DrawerLayout> 
like image 537
Vicky Salunkhe Avatar asked Jul 04 '18 10:07

Vicky Salunkhe


People also ask

Which method is used to handle clicks on the menu items of the navigation view?

You have to use OnNavigationItemSelectedListener(MenuItem item) method.

How do I customize my navigation drawer?

Android App Development for BeginnersStep 1 − Create a new project in Android Studio, go to File ⇒ New Project and fill all required details to create a new project. Step 2 − Add the following code to res/layout/activity_main. xml. Step 3 − Add the following code to res/layout/nav_header_main.

How do I get navigation drawer in all activity?

The user can view the navigation drawer when they swipe the activity's screen from the left edge of the android device. A user can also find it from the activity, by tapping the app icon (also known as the “hamburger” menu) in the action bar.


1 Answers

Just put your NavigationView after FrameLayout. Check below code:

<?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"     android:fitsSystemWindows="true"     tools:openDrawer="start">      <FrameLayout         android:layout_width="match_parent"         android:layout_height="match_parent">          <android.support.design.widget.AppBarLayout             android:layout_width="match_parent"             android:layout_height="wrap_content"             android:theme="@style/CustomTheme.AppBarOverlay">              <android.support.v7.widget.Toolbar                 android:id="@+id/toolbar"                 android:layout_width="match_parent"                 android:layout_height="?attr/actionBarSize"                 android:background="?attr/colorPrimary"                 app:popupTheme="@style/CustomTheme.PopupOverlay" />          </android.support.design.widget.AppBarLayout>          <android.support.design.widget.BottomNavigationView             android:id="@+id/bottomNavigationView"             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:background="?android:attr/windowBackground"             app:layout_constraintBottom_toBottomOf="parent"             app:layout_constraintLeft_toLeftOf="parent"             app:layout_constraintRight_toRightOf="parent"             app:labelVisibilityMode="labeled"             app:itemBackground="@color/colorPrimary"             android:layout_gravity="bottom"             app:itemIconTint="@drawable/selector_bottom_nav_bar"             app:itemTextColor="@drawable/selector_bottom_nav_bar"             app:menu="@menu/navigation"/>      </FrameLayout>      <android.support.design.widget.NavigationView         android:id="@+id/nav_view"         android:layout_width="wrap_content"         android:layout_height="match_parent"         android:layout_gravity="start"         android:fitsSystemWindows="true"         app:headerLayout="@layout/nav_header_main"         app:menu="@menu/activity_main_drawer" />  </android.support.v4.widget.DrawerLayout> 
like image 121
Sagar Zala Avatar answered Oct 14 '22 22:10

Sagar Zala