OnClick event in navigation box

I made a navigation box in Android in which I want to implement onClick for it. This is my main activity:

public class MainActivity extends AppCompatActivity { private DrawerLayout mDrawerLayout; private ActionBarDrawerToggle aToggle; private Toolbar toolbar; private RecyclerView recyclerView; private RecyclerAdapter recyclerAdapter; private RecyclerView.Adapter adapter; private NavigationView navigationView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer); aToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.drawable.navig, R.string.open, R.string.Close); navigationView = (NavigationView) findViewById(R.id.nav_view); mDrawerLayout.addDrawerListener(aToggle); toolbar = (Toolbar) findViewById(R.id.nav_action); toolbar.setNavigationIcon(R.drawable.navig); setSupportActionBar(toolbar); aToggle.syncState(); getSupportActionBar().setDisplayHomeAsUpEnabled(true); navigationView.setItemIconTintList(null); recyclerView = (RecyclerView) findViewById(R.id.recycler); recyclerAdapter = new RecyclerAdapter(getApplicationContext()); RecyclerView.LayoutManager layoutManager = new GridLayoutManager(this, 2); recyclerView.setLayoutManager(layoutManager); recyclerView.setAdapter(recyclerAdapter); } @Override public boolean onOptionsItemSelected(MenuItem item) { if (aToggle.onOptionsItemSelected(item)) { return true; } return super.onOptionsItemSelected(item); }} 

This is my XML layout for action:

  <?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" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.alpit.formula2.MainActivity"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginStart="0dp" android:orientation="vertical"> <android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/recycler" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="58dp" android:orientation="vertical"></android.support.v7.widget.RecyclerView> <android.support.v7.widget.Toolbar android:id="@+id/nav_action" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#EF6C00" android:orientation="vertical" android:theme="@style/ThemeOverlay.AppCompat.Dark"></android.support.v7.widget.Toolbar> </RelativeLayout> <android.support.design.widget.NavigationView android:id="@+id/nav_view" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="start" android:background="#FFA726" app:menu="@menu/navigation_menu" app:theme="@style/NavigationTheme"> </android.support.design.widget.NavigationView> </android.support.v4.widget.DrawerLayout> 

These are my menu items:

  <group android:id="@+id/gp1" android:checkableBehavior="single"> <item android:id="@+id/nav_maths" android:icon="@drawable/maths" android:title="Maths" /> <item android:id="@+id/nav_physics" android:icon="@drawable/physics" android:title="Physics" /> <item android:id="@+id/nav_chem" android:icon="@drawable/chem" android:title="Chemistry" /> <item android:id="@+id/EEE" android:icon="@drawable/lightbulb" android:title="Electronics Electrical" /> </group> <group android:id="@+id/gp2" android:checkableBehavior="single"> <item android:id="@+id/unitconversion" android:icon="@drawable/unitconversion" android:title="Unit Conversion" /> <item android:id="@+id/Scientist" android:icon="@drawable/scientist" android:title="Scientist" /> <item android:id="@+id/favourite" android:icon="@drawable/favourite" android:title="Favourite" /> </group> <group android:id="@+id/gp3" android:checkableBehavior="single"> <item android:id="@+id/Share" android:icon="@drawable/share" android:title="Share" /> <item android:id="@+id/Rate" android:icon="@drawable/rate" android:title="Rate" /> <item android:id="@+id/ads" android:icon="@drawable/ad" android:title="Remove Ads" /> <item android:id="@+id/aboutus" android:icon="@drawable/aboutus" android:title="About Us" /> </group> </menu> 

The problem is that I can’t understand how to implement onClick in the navigation block, because it is filled with the list given by us, and not with any listView.

How can I implement onClick on navigation box items?

+11
source share
6 answers

You need to add an implementing NavigationView.OnNavigationItemSelectedListener

 public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener 

and add method

 @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { // Handle navigation view item clicks here. switch (item.getItemId()) { case R.id.nav_maths: { //do somthing break; } } //close navigation drawer mDrawerLayout.closeDrawer(GravityCompat.START); return true; } 

method to set the listener

 private void setNavigationViewListener() { NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); navigationView.setNavigationItemSelectedListener(this); } 

method call in onCreate ()

 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setNavigationViewListener() } 
+23
source

Below is the code to add a switch to DrawerLayout

  DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); ActionBarDrawerToggle toggle = new ActionBarDrawerToggle( this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); drawer.setDrawerListener(toggle); 

And to add a listener to the navigation menu items

 implements NavigationView.OnNavigationItemSelectedListener 

and override below method

 @Override public boolean onNavigationItemSelected(MenuItem item) { // Handle navigation view item clicks here. int id = item.getItemId(); if(id == R.id. nav_maths){ //Handle your stuff here } } 

Add below code to onCreate method

 NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); navigationView.setNavigationItemSelectedListener(this); 
+1
source

Add NavigationItemSelectedListener event to nav_view

 NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); navigationView.setNavigationItemSelectedListener(this); 

Embed your activity with NavigationView.OnNavigationItemSelectedListener

and add this code for the click element.

 @SuppressWarnings("StatementWithEmptyBody") @Override public boolean onNavigationItemSelected(MenuItem item) { // Handle navigation view item clicks here. int id = item.getItemId(); if (id == R.id.nav_camera) { // Handle the camera action } else if (id == R.id.nav_gallery) { } else if (id == R.id.nav_slideshow) { } else if (id == R.id.nav_manage) { } else if (id == R.id.nav_share) { } else if (id == R.id.nav_send) { } DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); drawer.closeDrawer(GravityCompat.START); return true; } 
+1
source

in

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

add these lines:

 switch (item.getItemId()) { case R.id.nav_maths: // your logic here. return true; case R.id.nav_physics: //your logic here return true; default: return super.onOptionsItemSelected(item); } 
+1
source

Step 1: Extends NavigationView.OnNavigationItemSelectedListener in your activity Step2: Then an error will be displayed, and then override the method:

  @Override public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) { return false; } 

get the id with menuItem.getId() . And carry out your actions according to your needs.

Last step: Add this line to onCreate navigationView.setNavigationItemSelectedListener(this);

It.

0
source
  fab=(FloatingActionButton)findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { } } 
-2
source

Source: https://habr.com/ru/post/1015060/


All Articles