Использование меню «Параметры» в многофрагментарной деятельности
-
27-10-2019 - |
Вопрос
у меня есть FragmentActivity
который размещает FragmentStatePagerAdapter
. Анкет Пейджер содержит несколько экземпляров одного и того же фрагмента, чтобы пользователь мог провести между элементами в списке. Я хочу иметь возможность предоставить пользователю меню «Параметры», которое будет действовать только на видимом элементе.
Например, у меня есть список изображений, отображаемых в изображениях внутри фрагментов. Я хочу элемент меню «Опции», позволяющий пользователю установить изображение в качестве обоев.
В тот момент, когда я пробую это, когда onPrepareOptionsMenu
называется, код вызывается в нескольких фрагментах (обычно текущий + следующий). То же самое, когда выбран элемент. Это приводит к тому, что неправильное изображение установлено как обои.
Как я могу предотвратить запуск меню «Параметры» для большего, чем видимый фрагмент в настоящее время?
Решение
Моим решением было использовать setOnPageChangeListener
Метод ViewPager
Чтобы отслеживать, что Fragment
Индекс был в настоящее время видна с onPageSelected
перезвонить. Вы все еще должны получить первоначальный индекс самостоятельно, но в моем случае это было тривиально
Другие советы
Вы можете перехватить обратный вызов меню «Параметры» в «Заявлении», измельченном измельченными, и явно вызовут элемент из правильного фрагмента, возвращаясь к истине, чтобы указать, что вы справились с ним.
Хитрость состоит в том, чтобы изменить стазопции (верно | false) на каждом фрагменте перед заполненным меню. Это уже помогло мне