BottomNavigation View OnNavigationItemSelectedListener 已弃用

BottomNavigation View OnNavigationItemSelectedListener is deprecated

我正在按照 Material Design

尝试 Android 的 BottomNavigationView 实现

但是,在 MainActivity 代码中,我收到一条警告,指出 OnNavigationItemSelectedListener 已被弃用 - 请参见下面的快照

已尝试使用 BottomNavigationView 的替代方法,但我找不到它。

向任何有出路的人寻求帮助,但与此同时,我将我的 BottomView 的菜单项 ID 与片段目标 ID 进行了匹配,并且我成功实现了导航,但存在无法更新我的工具栏标题的限制片段的名称。

只需使用OnItemSelectedListener界面:

kotlin

bottomNavigationView?.setOnItemSelectedListener {
    // do stuff

    return@setOnItemSelectedListener true
}

Java

bottomNavigationView.setOnItemSelectedListener(item -> {
    // do stuff

    return true;
});
  binding!!.bottomNavigationView.setOnItemSelectedListener{
        when (it.itemId) {
            R.id.home_menu -> {
                openFragment(HomeFragment.newInstance("", ""))
                return@setOnItemSelectedListener true
            }
            R.id.deals -> {
                openFragment(DealFragment.newInstance("", ""))
                return@setOnItemSelectedListener true
            }
            R.id.history -> {
                openFragment(HistoryFragment.newInstance("", ""))
                return@setOnItemSelectedListener true
            }
            R.id.page_2 -> {
                openFragment(AccountFragment.newInstance("", ""))
                return@setOnItemSelectedListener true
            }
        }
        false
    }

试试这个!!

这是 Kotlin 的解决方案。确保 return@setOnItemSelectedListener true,这行代码更改导航视图中菜单项的颜色。

bottomNavigationView.setOnItemSelectedListener {
        when (it.itemId) {
            R.id.firstId -> {
                // Write your code here
            }
            R.id.secondID-> {
                // Write your code here
            }
        }
        return@setOnItemSelectedListener true
    }

OnNavigationItemSelectedListener 现在已弃用,请在下面的一些示例中使用 setOnItemSelectedListener -

bottomNav.setOnItemSelectedListener(new NavigationBarView.OnItemSelectedListener() {
            @SuppressLint("NonConstantResourceId")
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {

                switch (item.getItemId()) {
                    case R.id.bottom_m_home:
                        viewPager.setCurrentItem(0);
                        break;
                    case R.id.bottom_m_reward:
                        viewPager.setCurrentItem(1);
                        break;
                    case R.id.bottom_m_wallet:
                        viewPager.setCurrentItem(2);
                        break;
                    case R.id.bottom_m_share:
                        viewPager.setCurrentItem(3);
                        break;
                    default:
                        viewPager.setCurrentItem(0);
                }
                return true; // return true;
            }
        });

您可以使用 Bubble Navigation 代替 BottomNavigationView。

Bubble Navigation 是一个轻量级库,可通过大量自定义选项轻松制作漂亮的导航栏。