Меню не отображается фрагментом

Меню не отображается фрагментом

Мое требование простое, я хочу открыть список элементов меню во фрагменте. Итак, я создал XML меню внутри меню и попытался раздуть его внутри метода onCreateOptionsMenu во фрагменте, но, к сожалению, ничего не отображается.

Вот:

myFragment.java

public static MoreFragment newInstance() {
        return new MoreFragment();
    }


    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setHasOptionsMenu(true);
    }

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        super.onCreateOptionsMenu(menu, inflater);
        menu.clear();
        inflater.inflate(R.menu.more_drawer, menu);

    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        super.onCreateView(inflater, container, savedInstanceState);
        setHasOptionsMenu(true);
        View v = inflater.inflate(R.layout.fragment_more, container, false);

        setUp(v);

        return v;
    }

вот, more_drawer.xml:

 <?xml version = "1.0" encoding = "utf-8"?>
    <menu xmlns:android = "http://schemas.android.com/apk/res/android">
        <item
            android:id = "@+id/nav_busTracking"
            android:icon = "@drawable/ic_more_drawer_bus_tracking"
            android:title = "Bus Tracking" />
        <item
            android:id = "@+id/nav_kidsWallet"
            android:icon = "@drawable/ic_more_drawer_kids_wallet"
            android:title = "Kids' Wallet" />

        <item
            android:id = "@+id/nav_circlals"
            android:icon = "@drawable/ic_more_drawer_circulars"
            android:title = "Circulars" />

        <item
            android:id = "@+id/nav_message"
            android:icon = "@drawable/ic_more_drawer_messages"
            android:title = "Messages" />

        <item
            android:id = "@+id/nav_accountSettingd"
            android:icon = "@drawable/ic_more_drawer_account_settings"
            android:title = "@string/account_settings" />

        <item
            android:id = "@+id/nav_logout"
            android:icon = "@drawable/ic_more_drawer_logout"
            android:title = "Log Out" />

    </menu>

fragment.xml:

<?xml version = "1.0" encoding = "utf-8"?>
<RelativeLayout xmlns:android = "http://schemas.android.com/apk/res/android"
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    xmlns:app = "http://schemas.android.com/apk/res-auto">


</RelativeLayout>

Я попробовал поместить setHasOptionsMenu (истина) внутрь onCreate () и onCreateView (), но ничего не отображается.

Я попробовал отладить и обнаружил, что onCreateOptionsMenu () не вызывается. Я попробовал все решения этого вопроса, но ничего не пошло в мою пользу.

Что я делаю неправильно?

@ ʍѳђ ઽ ૯ ท этот метод сам по себе не называется

user9923632 13.09.2018 13:09
1
1
3 618
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Измените это:

@Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        super.onCreateOptionsMenu(menu, inflater);
        menu.clear();
        inflater.inflate(R.menu.more_drawer, menu);

    }

К:

@Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        inflater.inflate(R.menu.more_drawer, menu);
        super.onCreateOptionsMenu(menu, inflater);

    }

И используйте: setHasOptionsMenu(true); после того, как view inflates-created:

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onActivityCreated(savedInstanceState);
    setHasOptionsMenu(true);
}

такой же результат ничего не приходит :(

user9923632 13.09.2018 13:14
public static MoreFragment newInstance используют это в первой строке определения Fragment? Кроме того, я обновил ответ с помощью onActivityCreated.
ʍѳђઽ૯ท 13.09.2018 13:17

Метод newInstance, используемый для замены моего фрагмента, и теперь он появляется, но он появляется на панели действий справа

user9923632 13.09.2018 13:21

Это весь код фрагмента? Если нет, вы бы вставили все это? Также попробуйте добавить setHasOptionsMenu(true); после View v = inflater.inflate. Он должен работать с этими изменениями.

ʍѳђઽ૯ท 13.09.2018 13:24

Рад слышать этого приятеля!

ʍѳђઽ૯ท 13.09.2018 13:51

Вы проверили свой файл манифеста?

Убедитесь, что тема, которую вы выбрали для занятия, включает панель действий. например: android: theme = "@ style / Theme.AppCompat">

Другие вопросы по теме