android 底部导航视图OnNavigationItemSelectedListener已弃用

vojdkbi0  于 2022-12-21  发布在  Android
关注(0)|答案(6)|浏览(423)

我正在根据Material Design试用Android的BottomNavigationView实现
但是,在MainActivity代码上,我收到了OnNavigationItemSelectedListener已过时的警告-请参见下面的快照

我已尝试获取使用BottomNavigationView的替代方法,但找不到。
寻找任何人的帮助与出路,但在此期间,我已经匹配了我的BottomView的菜单项id与片段的目的地id,我成功地实现了导航,但有一个限制,不能更新我的工具栏标题与片段的名称。

bhmjp9jg

bhmjp9jg1#

只需使用OnItemSelectedListener接口:

Kotlin

bottomNavigationView?.setOnItemSelectedListener {
    // do stuff

    return@setOnItemSelectedListener true
}

** java **

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

    return true;
});
ne5o7dgx

ne5o7dgx2#

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
    }

试试这个!!

iszxjhcz

iszxjhcz3#

您可以使用Bubble Navigation代替底部导航视图。
Bubble Navigation是一个轻量级的库,可以轻松地创建漂亮的导航栏,并提供大量的🎨自定义选项。

pes8fvy9

pes8fvy94#

这是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
    }
6jjcrrmo

6jjcrrmo5#

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;
            }
        });
r1zk6ea1

r1zk6ea16#

我无法让setOnItemSelectedListener工作,因为我也在使用setupWithNavController,所以我切换到addOnDestinationChangedListener,它工作了。

navController.addOnDestinationChangedListener((controller, destination, arguments) -> {
     if(destination.getId()==R.id.menu_item_id){
      //navigate to other activity
     }
})

SOURCE

相关问题