当前位置: 首页 > 知识库问答 >
问题:

在Android BottomNavigationView中设置所选项目

闻飞跃
2023-03-14

我正在使用新的android。支持设计小装置。来自支持库的BottomNavigationView。如何从代码中设置当前选择?我意识到,在旋转屏幕后,选择被更改回第一项。当然,如果有人能告诉我如何在“暂停”功能中“保存”底部导航视图的当前状态,以及如何在“恢复”功能中恢复它,这也会有所帮助。

谢谢

共有3个答案

万俟招
2023-03-14

对于仍然使用SupportLibrary的用户

我不确定这是否是这个问题的完整答案,但我的问题非常相似——我必须处理back按钮按下并将用户带到他所在的前一个选项卡。所以,也许我的解决方案对某人有用:

private void updateNavigationBarState(int actionId){
    Menu menu = bottomNavigationView.getMenu();

    for (int i = 0, size = menu.size(); i < size; i++) {
        MenuItem item = menu.getItem(i);
        item.setChecked(item.getItemId() == actionId);
    }
}

请记住,如果用户按“其他导航”选项卡“底部导航视图”(BottomNavigationView)将无法清除当前选定的项目,因此在处理导航操作后,您需要在您的“导航项目选定”(NavigationItemSelected)中调用此方法:

@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
    switch (item.getItemId()) {
        case R.id.some_id_1:
            // process action
            break;
        case R.id.some_id_2:
            // process action
            break;
        ...
        default:
            return false;
    }

    updateNavigationBarState(item.getItemId());

    return true;
}

关于实例状态的保存,我认为您可以使用导航视图的相同action id并找到合适的解决方案。

况谦
2023-03-14

要以编程方式单击BottomNavigationBar项目,您需要使用:

View view = bottomNavigationView.findViewById(R.id.menu_action_item);
view.performClick();

这将正确安排所有带有标签的项目。

鲁品
2023-03-14

API 25.3.0中引入了一种方法,即设置selecteditemid(int id),该方法允许您将一个项目标记为选中,就像它被点击一样。

从文档:

设置选定的菜单项ID。这与点击项目的行为相同。

代码示例:

BottomNavigationView bottomNavigationView;
bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottomNavigationView);
bottomNavigationView.setOnNavigationItemSelectedListener(myNavigationItemListener);
bottomNavigationView.setSelectedItemId(R.id.my_menu_item_id);

重要事项

您必须已经将所有项目添加到菜单中(如果您以编程方式执行此操作)并在调用setSelectedItemId之前设置Listener(我相信您希望在调用此方法时侦听器中的代码运行)。如果您在添加菜单项和设置侦听器之前调用setSelectedItemId,则不会发生任何事情。

 类似资料:
  • 我有选择权。如何设置为var选择自动选择? 例如,我手动选择选项1,它自动 <代码> 编辑我发现了。

  • 问题内容: 是否可以使用以下“类型”代码在下拉框中设置所选项目? 该数据库有一个月..我想在编辑页面上允许他们选择这个月..但是要用当前设置预先填写吗? 问题答案: 您需要设置正确选项标签的selected属性: 您的PHP如下所示: 我通常发现创建值数组并循环遍历以创建下拉列表比较整洁。

  • 问题内容: 我正在查看,并一直停留在该选项上。 我试着看这里,所有可以用于选项排序的字母下面的链接中的引用也使我对正在发生的事情有一个大致的了解。 我不明白的是如果需要符号,在这里给出的示例中,我应该如何解释10.5数字?如果“ f”是关于设置浮点的,那么它将变为10.5(然后,我可能不知道如何设置浮点…)。 问题答案: 知道这仅适用于1D或2D阵列,通常的想法是: 当是单个格式化字符串时,它将应

  • Navicat Data Modeler 提供一些选项让你自定义用户界面和性能。 若要打开选项窗口,从菜单栏选择“工具”->“选项”。

  • Navicat 为所有工具提供完整的自定义用户界面选项。 若要打开选项窗口,请从菜单栏选择“工具”->“选项”。

  • Navicat 为所有工具提供完整的自定义用户界面选项。 若要打开选项窗口,请从菜单栏选择“工具”->“选项”。