根据打开的碎片

时间:2018-02-13 10:14:36

标签: java android fragment

选项菜单:

    <item  
        android:id="@+id/home"
        android:icon="@drawable/ic_home"
        android:title="Home"/>

    <item  
        android:id="@+id/companies"
        android:icon="@drawable/ic_companies"
        android:title="Companies"/>

    <item  
        android:id="@+id/contact"
        android:icon="@drawable/ic_contacts"
        android:title="Contact"/>

我想根据打开的片段以编程方式更改此项目的图标,显然,当用户点击此按钮时会有不同的操作。我尝试了几件事情,但没有任何效果。

我尝试的最后一件事是我的Fragment onCreateView方法中的代码:

Menu menu = bottomNavigationView.getMenu();
menu.findItem(R.id.ic_home).setIcon(R.drawable.ic_home_fill);

但它不适合我。

我在selectFragment(MenuItem item)

中尝试了什么
switch (item.getItemId()) {
                case R.id.home:
                 item.setIcon(R.id.ic_home_fill);
                break;
            }

我想更改所选位置底部导航的图标。如果用户点击了一个项目,那么图标会变为另一个项目,当我选择另一个项目时,第一个图标可以设置为默认值。

参考此链接:Android: Bottom Navigation View - change icon of selected item 但它对我不起作用

请给我另一个解决方案。

谢谢

2 个答案:

答案 0 :(得分:1)

试试这个,它对我有用

BottomNavigationView mBottomNavigationView = (BottomNavigationView) findViewById(R.id.bottom_nav);
mBottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
                @Override
                public boolean onNavigationItemSelected(MenuItem item) {
                    invalidateOptionsMenu();
                    switch (item.getItemId()) {
                        case R.id.click_to_use:
                           addHomeFragment(MainActivity.this);
                            mTitle.setText("Home");
                            item.setIcon(R.drawable.device);
                            break;
                        case R.id.history:
                           addNotifyFragment(MainActivity.this);
                            mTitle.setText("History");
                            item.setIcon(R.drawable.ios_icon);

                            break;
                        case R.id.settings:
                          addSettingFragment(MainActivity.this);
                            mTitle.setText("Settings");
                            break;
                    }

                    return true;

                }
            });

答案 1 :(得分:0)

在菜单中进行任何修改后,您必须制作一个&#34; Invalidateoptionsmenu()&#34;在行动中。我邀请您测试此功能。 see here