在BottomNavigationView中设置最初选择的项目索引/ ID

Une*_*eXp 29 android selectedindex android-design-library androiddesignsupport bottomnavigationview

我已经实现了新的BottomNavigationView(com.android.support:design:25.0.0),并且不知道如何设置选择索引或MenuItemid(在我的情况下,默认情况下应该选择mid item).我担心现在没有这种可能性,因为它太原始了,但无论如何任何帮助都将受到赞赏.谢谢!

Une*_*eXp 48

对我有用的唯一解决方案是:

View view = bottomNavigationView.findViewById(R.id.menu_action_dashboard);
view.performClick();
Run Code Online (Sandbox Code Playgroud)

只需执行点击即可.希望我们在将来的版本中有额外的方法/属性.

UPD:

正如user5968678 所述,自Android Support Library v25.3.0以来添加了新方法:

bottomNavigationView.setSelectedItemId(R.id.item_id);
Run Code Online (Sandbox Code Playgroud)

所以请改用:)

  • 最佳解决方案 (3认同)

use*_*678 42

使用以下方法设置所选菜单项ID setSelectedItemId:

bottomNavigationView.setSelectedItemId(R.id.item_id);
Run Code Online (Sandbox Code Playgroud)

此方法已从Android支持库25.3.0开始提供.


Jan*_*ski 20

我认为这个解决方案比接受的答案稍微优雅一点:

bottomNavigationView.getMenu().getItem(menuItemIndex).setChecked(true)
Run Code Online (Sandbox Code Playgroud)

其中menuItemIndex是所选元素的索引.


are*_*lek 7

以下是文档中所说的内容:

菜单项也可用于以编程方式选择当前活动的目的地.它可以使用MenuItem#setChecked(true)

作为Jan发布的替代方案,您还可以按ID找到该项目:

Menu menu = findViewById(R.id.navigation).getMenu();
menu.findItem(R.id.navigation_home).setChecked(true);
Run Code Online (Sandbox Code Playgroud)

此外,我可以建议打电话.callOnClick()而不是.performClick().