Использование меню «Параметры» в многофрагментарной деятельности

StackOverflow https://stackoverflow.com/questions/6831544

Вопрос

у меня есть FragmentActivity который размещает FragmentStatePagerAdapter. Анкет Пейджер содержит несколько экземпляров одного и того же фрагмента, чтобы пользователь мог провести между элементами в списке. Я хочу иметь возможность предоставить пользователю меню «Параметры», которое будет действовать только на видимом элементе.

Например, у меня есть список изображений, отображаемых в изображениях внутри фрагментов. Я хочу элемент меню «Опции», позволяющий пользователю установить изображение в качестве обоев.

В тот момент, когда я пробую это, когда onPrepareOptionsMenu называется, код вызывается в нескольких фрагментах (обычно текущий + следующий). То же самое, когда выбран элемент. Это приводит к тому, что неправильное изображение установлено как обои.

Как я могу предотвратить запуск меню «Параметры» для большего, чем видимый фрагмент в настоящее время?

Это было полезно?

Решение

Моим решением было использовать setOnPageChangeListener Метод ViewPager Чтобы отслеживать, что Fragment Индекс был в настоящее время видна с onPageSelected перезвонить. Вы все еще должны получить первоначальный индекс самостоятельно, но в моем случае это было тривиально

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

Вы можете перехватить обратный вызов меню «Параметры» в «Заявлении», измельченном измельченными, и явно вызовут элемент из правильного фрагмента, возвращаясь к истине, чтобы указать, что вы справились с ним.

Хитрость состоит в том, чтобы изменить стазопции (верно | false) на каждом фрагменте перед заполненным меню. Это уже помогло мне

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top