Фрагмент с пакетом совместимости и> сотами - PullRequest
3 голосов
/ 16 ноября 2011

Мне нужно написать приложение для телефонов и планшетов, и я хотел бы использовать один и тот же проект для обоих.Кажется, использование библиотеки совместимости полезно для написания кода многократного использования.

Возможно ли использовать один и тот же класс Fragment для обоих?

Я думаю о начальном действии, которое "разветвляется" наприложение в до-сотовой деятельности и после-сота, повторно используя те же классы фрагмента.Дело в том, что если я включу android.app.Fragment, фрагмент не будет использоваться из FragmentActivity и наоборот.Я мог бы использовать только FragmentActivities, но это предотвратило бы использование панели действий.

Как это сделать?

Ответы [ 3 ]

0 голосов
/ 22 ноября 2011

Решение в примере здесь не представляется подходящим. Для контактов проблема в том, что существует класс, который устарел, но вы все равно можете его скомпилировать. С фрагментом, если вы ссылаетесь на android.app.Fragment, вы не можете скомпилировать этот класс с помощью sdk <3.0, в то время как при использовании import android.support.v4.app.Fragment вы не можете скомпилировать для соты (вы можете только, если вы сохраните использование библиотеки поддержки даже в сотах, что, кажется, не самое лучшее решение). </p>

Мне удалось сделать это только благодаря двум разным проектам, представляющим две разные реализации прокси. Чем я использую правильную реализацию для каждого SDK. Это не так просто, как кажется, потому что вам придется создать прокси для FragmentTransaction, FragmentManager и т. Д.

Это сработало у меня, но не сработало для настроек с фрагментом. В этом случае xml-файлы, которые используют фрагмент, не могут быть скомпилированы с предварительно установленным sdk сота.

0 голосов
/ 24 января 2012

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

Он использует собственные классы ActionBar, предоставляемые API 13+, поэтому код должен многократно использоваться для ваших "вилок" (или вам, возможно, не придется так много / вообще разветвляться).

Стоит посмотреть сайт ...

0 голосов
/ 17 ноября 2011

Да, вы можете использовать один и тот же класс фрагмента для обоих.Вы не хотите прикасаться к коду панели действий на телефоне (до соты), поэтому простой способ - просто спрятать код панели действий в классе адаптера, который вы используете только в своем фрагменте для сота +, см. Ответ здесь .

Одна вещь, которую вы затем можете сделать, - это использовать ресурсы, зависящие от версии / размера, такие как menu, menu-v11 и т. д., чтобы добавить элементы меню, скажем, на панель действий на планшете илистандартное всплывающее меню на телефоне.

...