Android 导航抽屉保持突出显示

Android Navigation Drawer Remains Highlighted

我可以通过我的导航抽屉从 Activity1 导航到 Activity2。

但是在 activity2 处按下后退按钮后,该选项仍然突出显示。

我在activity1中的代码如下

public boolean onNavigationItemSelected(MenuItem Item)
{
    int id = item.getItemId();

    if(id == R.id.activity2)
    {
        Intent goPage2 = new Intent(activity1.this, activity2.class);
        startActivity(goPage2);
    }
}

activity2.

中没有代码

请问如何去除高光?

使用 menuItem.setChecked(true) 应选中它,使用 menuItem.setChecked(false) 取消选中它。

要取消选中项目点击,您必须通过 false 选中的项目:

public boolean onNavigationItemSelected(MenuItem Item) //will consider to keep this in lower case - item
{
int id = item.getItemId();

 if(id == R.id.activity2)
 {
    Intent goPage2 = new Intent(activity1.this, activity2.class);
    startActivity(goPage2);
    Item.setChecked(false);  //pass false to uncheck
 }
}

当然它会保持突出显示("selected" 更专业)因为当您 select 来自 Navigation Drawer 的项目时,下一个 activity 被创建并且 [=22= Navigation Drawer 存在的 ] 暂停并停止而不是销毁(onPause() 然后 onStop() 被调用)并保留在内存中,直到您的设备有足够的内存。因此,转到下一个 activity 并不会消耗太多内存来强制 android 销毁前一个 activity。您可以做的是完全销毁导航抽屉 activity,或者您可以手动取消选中导航抽屉中的所有项目,方法是在第一个 activity 的 onRestart() 方法中为所有项目编写此代码。

menuItem1.setChecked(false);
menuItem2.setChecked(false);
menuItem3.setChecked(false);
menuItem4.setChecked(false);

等等。

我发现在 onNavigationItemSelected 结束时 return false,如果您不需要使用突出显示功能。

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