Использование меню параметров в мультифрагментном действии - PullRequest
4 голосов
/ 26 июля 2011

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

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

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

Как я могу предотвратить запуск меню опций для более видимого в данный момент фрагмента?

Ответы [ 3 ]

3 голосов
/ 27 июля 2011

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

1 голос
/ 10 мая 2013

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

1 голос
/ 26 июля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...