在Android中获取当前选定的导航抽屉项目

问题描述 投票:4回答:3

我怎样才能获得当前选定的导航抽屉项目?我的菜单存储在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;
        }
    });
android android-menu android-navigation-drawer
3个回答
9
投票

例如,您可以使用:

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

3
投票

您可以通过以下方式查看当前是否选择了某个项目:

if(navigationView.getMenu().findItem(R.id.nav_item).isChecked())
//do some stuff

0
投票

你有OnNavigationItemSelectedListener,方法是onNavigationItemSelected(MenuItem item),每次选择新项目时都会调用它。这个item有方法getItemId()将返回id,并获得getOrder(),它将返回位置。

在你的类中创建int var,保存此id。

例如,您可以稍后将其保存到onSaveInstanceState上,然后将其恢复到onRestorInstanceState。并使用navigationView.setCheckedItem(savedItemId);应用它。

© www.soinside.com 2019 - 2024. All rights reserved.