Android: onCreateView () работает на расстоянии одной вкладки


Я создаю приложение с вкладками и сталкиваюсь с проблемой. onCreateView() запускается, когда я нажимаю вкладку рядом с тем местом, где я нахожусь. Я имею в виду, что если у меня есть три вкладки (setup, maps и motor), то представление onCreateView() для карт и настроек будет запущено, если я нажму на вкладку motor. Кроме того, onDestroyView () для motor не будет работать, пока я не получу две вкладки, нажав на setup. Есть ли так или иначе вокруг этого, и заставить их работать, когда определенная вкладка нажата или удалена?

1 2

1 ответ:

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

ViewPager предназначен для предварительной загрузки содержимого (как минимум одного из) вкладок/фрагментов по обе стороны от текущей вкладки/фрагмента. Это происходит потому, что Android должен предварительно загрузить этот контент, чтобы отобразить его в ответ, когда вы меняете / проводите между вкладками / фрагментами в вашем ViewPager.

Это не может быть отключено, так как минимальное количество соседних вкладок можно установить равным значение pre-loaded равно 1 (это означает, что содержимое вкладок слева и справа всегда будет предварительно загружено при использовании ViewPager).

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