setOnNavigationItemSelectedListener 已弃用

新手上路,请多包涵

目前我正在开发一个应用程序,它有一个带有三个菜单项的底部导航栏。我曾使用 setOnNavigationItemSelectedListener() 来点击项目。但现在我面临着该方法已贬值的问题。

  • 应用语言: Java
  • 问题: 'setOnNavigationItemSelectedListener(com.google.android.material.bottomnavigation.BottomNavigationView.OnNavigationItemSelectedListener)' is deprecated

有什么办法可以解决吗?有没有比 setOnNavigationItemSelectedListener() 方法更好的替代方法。

原文由 Jeyasurya 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.3k
2 个回答

根据 github 来源,它已被弃用: BottomNavigationView.setOnNavigationItemSelectedListener

在其评论中,您可以阅读:

 @deprecated Use {@link NavigationBarView#setOnItemSelectedListener(OnItemSelectedListener)}
   *     instead.

所以使用 NavigationBarView.setOnItemSelectedListener 从它的基类:

   /**
   * Set a listener that will be notified when a navigation item is selected. This listener will
   * also be notified when the currently selected item is reselected, unless an {@link
   * OnItemReselectedListener} has also been set.
   *
   * @param listener The listener to notify
   * @see #setOnItemReselectedListener(OnItemReselectedListener)
   */
  public void setOnItemSelectedListener(@Nullable OnItemSelectedListener listener) {
    selectedListener = listener;
  }

另请参阅此 提交

因为它解释了对这一变化的困惑:

监听器已弃用,取而代之的是 NavigationBarView#OnItemSelectedListenerNavigationBarView#OnItemReselectedListener ,但从未添加弃用文档,因此不清楚开发人员应该使用什么。

原文由 marcinj 发布,翻译遵循 CC BY-SA 4.0 许可协议

你可以试试 setonItemSelectedListener 。它的工作原理与 setOnNavigationItemSelectedListener() 相同[在android 11中测试]

 bnv.setOnItemSelectedListener(new NavigationBarView.OnItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            int id = item.getItemId();
            switch(id){
              //check id
            }
            return true;
        }
    });

科特林:

 bnv.setOnItemSelectedListener { item ->
            when (item.itemId) {
            }
            true
        }

原文由 Abu Saeed 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题