Android Фрагмент с методом ViewPager и SectionsPageAdapter, выполняемый при щелчке пользователем имени вкладки, чтобы отобразить ее, или переходе к ней - PullRequest
0 голосов
/ 07 мая 2020

Я пытался определить, почему методы onPause() и onResume() не запускались, когда пользователь переключает вкладку, отображаемую при использовании ViewPager и sectionPageAdapter.

Я предполагал, что когда пользователь изменяет отображаемую вкладку, будут вызваны методы onPause() или onDestroy(). Затем, если пользователь вернется на вкладку, будет вызван метод onResume(), но, похоже, это не функциональность ...

есть ли способ определить, когда пользователь переключает вкладку и на знаете, на какую вкладку он был переключен? Что-то вроде onFragmentBeingDisplayed() или подобное.

Спасибо!

РЕДАКТИРОВАТЬ: Ответ от Сураджа Вайшнава

Путем редактирования конструктора из FragmentPageAdapter как это super(fm, FragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT); Я мог бы использовать желаемое поведение в приложении

Ответы [ 2 ]

1 голос
/ 07 мая 2020

Это потому, что ViewPager загружает некоторые фрагменты слева и справа от текущего фрагмента. По умолчанию ViewPager загружает один слева и один справа от фрагмента. Вы можете изменить номер с помощью: viewpager.setOfScreenPageLimit(int);

То, что вы думаете, работает точно так же в androidx's Fragment. Значит, onPause и onResume будут звонить соответственно. Итак, первое предложение - использовать androix. Отметьте этот ответ: { ссылка }

По какой-то причине, если вы не хотите использовать androidx, тогда в своем фрагменте переопределите метод setUserVisibleHint, который дает вам isVisibleToUser в качестве параметра.

0 голосов
/ 07 мая 2020

Если вы не хотите использовать версию Viewpager для Androidx, чтобы использовать поведение BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT для активации onResume только для отображаемого фрагмента, вы можете вместо этого добавить addOnPageChangeListener

Вы можете использовать ViewPager.SimpleOnPageChangeListener или вашу собственную реализацию интерфейса ViewPager.OnPageChangeListener.

Этот PageChangeListener имеет метод onPageSelected с вызывается с позицией selected.

Хотя я дал ссылки на документацию Androidx, это также работает в более ранних библиотеках поддержки, только Google удалил для него документы, так как они хотят, чтобы вы использовали Androidx

Обратите внимание на это ViewPager.OnPageChangeListener onPageSelected срабатывает в немного другое время, чем onResume с BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT. Он срабатывает, когда около 50% новой вкладки перемещается на экран, когда onResume срабатывает, когда на экране отображается 100% новой вкладки.

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