Использование меню опций в многофрагментном действии
У меня есть FragmentActivity
, который содержит FragmentStatePagerAdapter
. Пейджер содержит несколько экземпляров одного и того же фрагмента, чтобы пользователь мог перемещаться между элементами списка. Я хочу иметь возможность предоставить пользователю меню опций, которое будет действовать только на видимый пункт.
Например, у меня есть список изображений, отображаемых в imageviews внутри фрагментов. Мне нужен пункт меню опций, позволяющий пользователю установить изображение в качестве обоев.
В тот момент, когда я пытаюсь это сделать, когда onPrepareOptionsMenu
является вызывается, код вызывается в нескольких фрагментах (обычно текущий + следующий). То же самое, когда элемент выбран. Это приводит к неправильному изображению, которое будет установлено в качестве обоев.
Как я могу предотвратить запуск меню опций для большего, чем видимый в данный момент фрагмент?
3 ответа:
Мое решение состояло в том, чтобы использовать метод
setOnPageChangeListener
ViewPager
, чтобы отслеживать, какой индексFragment
в настоящее время виден с обратным вызовомonPageSelected
. Вы все еще должны получить исходный индекс самостоятельно, но в моем случае это было тривиально