3

我很困惑如何在运行时设置导航视图组的可见性。我想在导航抽屉上创建一个登录功能。当用户在那里点击登录项时,应用程序会执行startActivityForResult(). 这是我的菜单 xml 代码。

    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android">
        <group android:checkableBehavior="single">
            <item android:id="@+id/nav_featured" android:icon="@drawable/ic_notifications_on_24dp"
                android:title="Featured" />
            <item android:id="@+id/nav_top_rated" android:icon="@drawable/ic_star_rate_24dp"
                android:title="Top Rated" android:checked="true"/>
            <item android:id="@+id/nav_most_visited" android:icon="@drawable/ic_group_24dp"
                android:title="Most Visited" />
            <item android:id="@+id/nav_arround_you" android:icon="@drawable/ic_place_24dp"
                android:title="Arround You" />
        </group>

        <group android:id="@+id/public_items">
            <item android:title="My Account">
                <menu>
                    <item android:id="@+id/nav_login" android:icon="@drawable/ic_person_24dp"
                        android:title="Login" />
                </menu>
            </item>
        </group>

       <group android:id="@+id/login_items" android:visible="false">
            <item android:title="My Account">
                <menu>
                    <item android:id="@+id/nav_search" android:icon="@drawable/ic_directions_bike_24dp"
                        android:title="Search"/>
                    <item android:id="@+id/nav_my_bookings" android:icon="@drawable/ic_event_available_24dp"
                        android:title="My Bookings"/>
                    <item android:id="@+id/nav_profile" android:icon="@drawable/ic_tag_faces_24dp"
                        android:title="My Profile"/>
                    <item android:id="@+id/nav_logout" android:icon="@drawable/ic_power_settings_new_black_24dp"
                        android:title="Logout"/>
                </menu>
            </item>
        </group>
    </menu>

这是我的java代码。

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK) {
            if (requestCode == REQUEST_CODE_FOR_LOGIN) {
                navigationView.getMenu().setGroupVisible(R.id.login_items, true);
            }
        }
    }

什么也没发生。

4

1 回答 1

0

当每次调用 menu.xml 文件时,您必须在每次更新视图或当前活动时调用它。

于 2021-07-28T12:40:49.360 回答