任何人都可以帮我解决这个问题吗?我是 Java 新手。 单击底部导航按钮时,它应该激活菜单。但只有主页按钮始终处于活动状态。单击其他按钮 更改活动颜色 1 秒。 1 秒后,活动颜色返回到第一个按钮。
public class BottomNavigation {
public static void setupBottomNavigation(final Activity activity, final BottomNavigationView bottomNavigationView) {
bottomNavigationView.setOnItemSelectedListener(item -> {
if (item.getItemId() == R.id.bookList) {
startActivity(activity, BookListActivity.class);
bottomNavigationView.setSelectedItemId(R.id.bookList); //This line is not working
return true;
} else if (item.getItemId() == R.id.home) {
startActivity(activity, MainActivity.class);
return true;
} else if (item.getItemId() == R.id.writerList) {
startActivity(activity, WriterActivity.class);
return true;
} else if (item.getItemId() == R.id.libraryList) {
startActivity(activity, LibraryActivity.class);
return true;
} else if (item.getItemId() == R.id.contactUs) {
startActivity(activity, ContactActivity.class);
return true;
} else {
return false;
}
});
}
private static void startActivity(@NonNull Activity activity, Class<?> cls) {
activity.startActivity(new Intent(activity.getApplicationContext(), cls));
activity.overridePendingTransition(0, 0);
}
}
作为快速解决方法,您可以在
selectedItemId
之前设置 setOnItemSelectedListener
。我建议将 selectedItemId
参数添加到您的 BottomNavigation#setupBottomNavigation
中,然后您可以使用 bottomNavigationView.setSelectedItemId(selectedItemId);
来设置所选项目。
public class BottomNavigation {
public static void setupBottomNavigation(
final Activity activity,
final BottomNavigationView bottomNavigationView,
int selectedItemId //Added this parameter
) {
bottomNavigationView.setSelectedItemId(selectedItemId); //Set selected item
bottomNavigationView.setOnItemSelectedListener(item -> {
if (item.getItemId() == R.id.bookList) {
startActivity(activity, BookListActivity.class);
bottomNavigationView.setSelectedItemId(R.id.bookList); //This line is not working
return true;
} else if (item.getItemId() == R.id.home) {
startActivity(activity, MainActivity.class);
return true;
} else if (item.getItemId() == R.id.writerList) {
startActivity(activity, WriterActivity.class);
return true;
} else if (item.getItemId() == R.id.libraryList) {
startActivity(activity, LibraryActivity.class);
return true;
} else if (item.getItemId() == R.id.contactUs) {
startActivity(activity, ContactActivity.class);
return true;
} else {
return false;
}
});
}
private static void startActivity(@NonNull Activity activity, Class<?> cls) {
activity.startActivity(new Intent(activity.getApplicationContext(), cls));
activity.overridePendingTransition(0, 0);
}
}
问题
BottomNavigationView
不适合与活动一起使用,在您的代码中,您将在默认选定项目 0 的每个活动中创建新的 BottomNavigationView
。这就是为什么看起来没有选择项目,因为该活动被另一个活动替换一个。
现在您可以使用解决方法,但对于下一个应用程序,您应该使用带有底部导航的单个活动和项目片段。有很多免费资源和教程如何做到这一点,这个看起来不错 - Android 中的底部导航栏。