我有两个名为“MainActivity”和“LibraryActivity”的 Activity 。这两个 Activity 使用相同的“底部导航 View ”。在这种情况下,我成功地选择了正确的项目(用不同的颜色突出显示) 该 Intent 称为“LibraryActivity”。问题是通过使用“LibraryActivity”底部“导航 View ”项中的“onBackPressed()”返回“MainActivity”,未使用不同的颜色突出显示。
下面是我的代码:
MainActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context = this;
bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottom_navigation);
BottomNavigationViewHelper.disableShiftMode(bottomNavigationView);
// used to highlight the correct item
Menu bottomMenu = bottomNavigationView.getMenu();
for (int i=0; i<bottomMenu.size(); i++)
{
MenuItem bottomMenuItem = bottomMenu.getItem(0);
bottomMenuItem.setChecked(true);
}
// item click listener
bottomNavigationView.setOnNavigationItemSelectedListener(
new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_library:
Intent intent = new Intent(getApplicationContext(), LibraryActivity.class);
intent.putExtra("NUM", "0");
startActivity(intent);
break;
}
return true;
}
});
}
LibraryActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_library);
context = this;
bottomNavigationView = (BottomNavigationView)findViewById(R.id.bottom_navigation);
BottomNavigationViewHelper.disableShiftMode(bottomNavigationView);
// used to highlight the correct item
Menu bottomMenu = bottomNavigationView.getMenu();
for (int i=0; i<bottomMenu.size(); i++)
{
MenuItem bottomMenuItem = bottomMenu.getItem(1);
bottomMenuItem.setChecked(true);
}
// item click listener
bottomNavigationView.setOnNavigationItemSelectedListener(
new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.action_for_you:
onBackPressed();
break;
return true;
}
});
}
@Override
public void onBackPressed() {
super.onBackPressed();
}
最佳答案
获取此代码,
Menu bottomMenu = bottomNavigationView.getMenu();
for (int i=0; i<bottomMenu.size(); i++)
{
MenuItem bottomMenuItem = bottomMenu.getItem(0);
bottomMenuItem.setChecked(true);
}
并将其放置在这里,
@Override
protected void onResume() {
super.onResume();
Menu bottomMenu = bottomNavigationView.getMenu();
for (int i=0; i<bottomMenu.size(); i++)
{
MenuItem bottomMenuItem = bottomMenu.getItem(0);
bottomMenuItem.setChecked(true);
}
}
以便在其他 Activity 完成并且当前 Activity 恢复后恢复时它会得到更新。
关于java - 无法选中底部导航 View 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50617348/