0

Раньше у меня было 3 мероприятия с 3 макетами.Модернизация/переход от нескольких действий к Single ViewPager & Fragments

1. HomeActivity.java (activity_home.xml) 
2. HelpActivity.java (activity_help.xml) 
3. SettingsActivity.java (activity_settings.xml) 

Всякий раз, когда я должен был открыть другие действия, я использовал анимированные слайд-в-из фактически используя overridePendingIntent. Таким образом, все переменные HomeActivity остались само по себе, а переменные/методы HelpActivity были сами по себе и одинаковы для SettingsActivity. Я использовал onCreate() в этих целях, чтобы выполнить действительный код мероприятия. и android:onClick="fetchSarcasm" от activity_home.xml вызывал указанный метод в HomeActivity.java. Итак, конфликтов не было. Все нормальные вещи, которые происходят в AndroidProject с 3-мя действиями и использовались для переключения друг на друга, происходили так, как я хотел.

Но теперь я хотел перейти на ViewPager вместо переходов с плавными переходами. Таким образом, будет только одно действие с XML ViewPager. Этот ViewPager и его FragmentPagerAdapter получает страницы из 3 классов, расширяя Fragment с относительными макетами XML.

Я хочу спросить: Где я пишу мою страницу зависимый код для onCreate(), layoutView's onClick="" и onChangeListeners. Потому что 3 класса, распространяющиеся на Fragment, не имеют Context или findViewById(), и они не отвечают на android:onClick="method" в разных макетах.

Нужно ли мне смешать весь этот код из трех действий в один, содержащий ViewPager? Если это так, это делает работу ViewPager довольно тяжелой. и, написание if(page=2){ dothis(); } кажется абсурдным для всех страниц в каждой кодовой точке. Любой флажок (вид), который находится на стр. 3, становится нулевым на других страницах.

Я знаю, что это может быть глупый вопрос. Я потратил почти 4 дня, пытаясь чего-то добиться, но я не могу. Кроме того, это всего лишь мой 2-й месяц в андроиде, поэтому я новичок. Я не использую Action Bars, Tabbed Bars или Navigation Drawers.

Я также нахожусь в SO Chat, если вы хотите спросить что-то еще.

Я просто хочу знать, как объединить всю работу, которую я сделал, когда не использовал ViewPager.

+0

'Fragment's в' ViewPager's не обязательно воссозданы, когда вы проводите с ними. Ваш код 'onCreate()' действительно нужно вызывать каждый раз, когда фрагмент становится видимым для пользователя? –

+0

Нет, 'onCreate()' не требуется при каждой смене страницы. В 'onCreate()', я восстанавливаю часть sharedPreference, которая приводит к выбору флажка CheckBoxes или нет. Я думаю, что это можно сделать с помощью 'setOnPageChangeListener', но каждый раз? – rupinderjeet

+0

Вы можете прочитать свои настройки в 'onViewCreated()' или, альтернативно, в 'onCreateView()' каждого 'Fragment', а затем установите свои флажки соответственно. –

ответ

1

Если вы только чтение Preferences один раз для каждого Fragment, вы можете переместить предыдущую Activity.onCreate() логику каждого Fragment s onViewCreated() или onCreateView(). Прочитайте свои общие настройки и установите соответствующие флажки.

Fragment s внутри a ViewPager не обязательно воссозданы при каждой смене страницы. Вы можете изменить количество Fragment s, созданных одновременно с помощью ViewPager.setOffscreenPageLimit(int).

Fragment Lifecycles explained

Смежные вопросы