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