6

我可以通过我的导航抽屉从 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);
    }
}

活动 2 中没有代码。

我可以知道我该怎么做才能删除突出显示吗?

4

4 回答 4

10

我发现如果您不需要使用突出显示功能,只需在 onNavigationItemSelected 结束时返回 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;
}
于 2017-12-11T23:13:32.973 回答
6

要取消选中项目单击,您必须传递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
 }
}
于 2017-01-15T10:57:04.613 回答
0

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

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

等等。

于 2017-01-15T11:08:57.370 回答
-1

使用menuItem.setChecked(true)应该检查它并menuItem.setChecked(false)取消选中它。

于 2017-01-15T10:53:28.730 回答