Android BottomNavigationActivity跳转到其他Activity后返回时指定菜单项颜色

问题描述

从BottomNavigationActivity跳转到另一个Acitivity
BottomNavigationActivity跳转到另一个Activity之前,显示的是中间的界面,从另一个activity返回后同样显示的是中间的界面,但是下面的菜单项的选中效果却不一致

解决

利用Activity的生命周期解决这个问题。在BottomNavigationActivity中重写这个方法即可。

/**Activity重新进入运行状态时调用的方法
* 自定义变量WhichSelected记录的是navigation在最后一个菜单项被点击前被选中的菜单项的位置
* 例如上图,有三个菜单项,最后一个菜单项被点击前,被选中的菜单项是第二个,则此时WhichSelected=1。
*/
@Override
protected void onResume() {
     super.onResume();
     navigation.getMenu().getItem(WhichSelected).setChecked(true);
 }
假设你使用的是 Android 原生的 BottomNavigationView,同侧面菜单使用的是 Navigation Drawer,那么你可以通过如下代码来实现底部导航栏菜单项与侧面菜单项的联动: ```java // 在 Activity 或 Fragment 中获取 BottomNavigationView 实例 BottomNavigationView bottomNav = findViewById(R.id.bottom_navigation); // 设置底部导航栏菜单项的点击事件 bottomNav.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { switch (item.getItemId()) { case R.id.menu_home: // 点击了主页菜单项,切换到主页 Fragment getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new HomeFragment()).commit(); return true; case R.id.menu_dashboard: // 点击了仪表盘菜单项,切换到仪表盘 Fragment getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new DashboardFragment()).commit(); return true; case R.id.menu_notifications: // 点击了通知菜单项,切换到通知 Fragment getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new NotificationsFragment()).commit(); return true; } return false; } }); // 在 Navigation Drawer 中获取 NavigationView 实例 NavigationView navigationView = findViewById(R.id.nav_view); // 设置侧面菜单项的点击事件 navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { switch (item.getItemId()) { case R.id.menu_profile: // 点击了个人资料菜单项跳转到个人资料 Activity Intent intent = new Intent(MainActivity.this, ProfileActivity.class); startActivity(intent); return true; case R.id.menu_settings: // 点击了设置菜单项跳转到设置 Activity Intent intent = new Intent(MainActivity.this, SettingsActivity.class); startActivity(intent); return true; } return false; } }); ``` 在这个例子中,我们分别对底部导航栏和侧面菜单项设置了点击事件,并在点击事件中执行了不同的操作。你可以根据自己的需求来修改对应的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值