Переключение с TabHost на фрагменты с помощью Viewpager: куда поместить весь мой код - PullRequest
6 голосов
/ 20 января 2012

До сих пор я использовал TabHost для своего приложения для создания 3 вкладок. Каждая вкладка представлена ​​действием, в котором я получаю макет через setContentView(R.layout.something) из файла XML. Итак, 3 вкладки, 3 действия и 3 файла XML.

Теперь я наткнулся на фрагменты, которые являются новым и лучшим способом, так что вот мой вопрос.

Фрагменты обрабатывают пользовательский интерфейс, поэтому создайте 3 фрагмента, которые обрабатываются FragmentPagerAdapter. Внутри каждого фрагмента я создаю контент с помощью файлов XML.

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

Положить ли весь этот код в методы onCreate() и т. Д. Каждого фрагмента, или есть лучший и более чистый способ сделать это?

1 Ответ

3 голосов
/ 01 февраля 2012

Подход, который вы предлагаете, довольно хорош!

С точки зрения того, что и где делать, я бы порекомендовал вам сделать все, чтобы создать / изменить пользовательский интерфейс страницы (фрагмента) в onCreateView () каждого фрагмента, а также любую логику (чтение баз данных и т. Д.).) в onActivityCreated ().Я бы рекомендовал исключить onCreate () во фрагменте, потому что он вызывается до того, как он будет связан с Activity (что не позволяет выполнять такие действия, как управляемые запросы к поставщикам контента).Прослушиватели нажатий кнопок могут быть определены либо в onCreateView, либо в onActivityCreated ().

Что-нибудь более конкретное, дайте мне знать.Не забывайте, что стандартные пейджеры не содержат ряд заголовков / значков вкладок, но Google ViewPagerIndicator и вы найдете библиотеку, которую вы можете использовать для этого.

...