问题
How can i get Current selected item of navigation drawer? My menu is stored in drawer_menu.xml
navigationView = (NavigationView) findViewById(R.id.navigation_view);
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.change_sec:
Intent intent_sec = new Intent(MainActivity.this, ClassDataProvider.class);
startActivityForResult(intent_sec, 9);
drawerLayout.closeDrawers();
break;
case R.id.holiday_list:
Intent intent = new Intent(MainActivity.this, HolidayList.class);
startActivity(intent);
drawerLayout.closeDrawers();
break;
}
return true;
}
});
回答1:
For example, you can use:
private int getCheckedItem(NavigationView navigationView) {
Menu menu = navigationView.getMenu();
for (int i = 0; i < menu.size(); i++) {
MenuItem item = menu.getMenu(i);
if (item.isChecked()) {
return i;
}
}
return -1;
}
回答2:
You can find out if an item is current selected with this:
if(navigationView.getMenu().findItem(R.id.nav_item).isChecked())
//do some stuff
回答3:
You've got OnNavigationItemSelectedListener
, with method onNavigationItemSelected(MenuItem item)
, which is called every time new item is selected. This item
has methods getItemId()
which will return id, and get getOrder()
, which will return position.
Create int
var in your class, save this id.
For example you can save it to bundle later on onSaveInstanceState
, then get it back on onRestorInstanceState
. And apply it using navigationView.setCheckedItem(savedItemId);
.
来源:https://stackoverflow.com/questions/38336538/get-current-selected-item-of-navigation-drawer-in-android