Какие-нибудь простые примеры использования roboguice с фрагментами в Android? - PullRequest
14 голосов
/ 28 ноября 2011

У меня проблемы с поиском рабочего примера использования фрагментов + RoboGuice.Проблема возникает при попытке добавить / удалить фрагменты с помощью диспетчера транзакций фрагмента Android.Когда вы указываете фрагменту наследоваться от RoboFragment, менеджер транзакций больше не думает, что класс является фрагментом (потому что он расширяет RoboFragment).Однако вы можете использовать собственный менеджер фрагментов RoboGuice, но он также дает сбой.Есть ли примеры динамического добавления / удаления фрагментов RoboGuice?

Ответы [ 2 ]

13 голосов
/ 20 января 2012

Я недавно начал использовать фрагменты в новом проекте, и вот код, который я использую

Я не наследую от класса RoboFragment, но я делаю то же самое,добавив следующие строки в мои методы onCreate и onViewCreated.Наследование от RoboFragment не должно вести себя по-другому, на самом деле именно так выглядит RoboFragment.

public void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    RoboGuice.getInjector(getActivity()).injectMembersWithoutViews(this);
}

public void onViewCreated(final View view, final Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    RoboGuice.getInjector(getActivity()).injectViewMembers(this);
    // Do whatever with your injected views.
}

Очевидно, я также реализовал onCreateView.

Затем в своей Деятельности я расширяю FragmentActivity.так как я использую пакет совместимости .Обратите внимание, что вы должны использовать FragmentActivity, если хотите совместимости с уровнем API до 11. Если вы просто поддерживаете 11+, вам не нужна библиотека совместимости или использование FragementActivity.Затем в своей деятельности я использую следующее, чтобы добавить фрагмент на мою страницу.

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.add(R.id.fragmentHolder, new MyFragment());
transaction.commit();

Тип R.id.fragmentHolder - это FrameLayout.

С этим все работает нормальнои я могу использовать все свои ресурсы и представления в моем фрагменте.Для полноты картины я использую последнюю версию 2.0-SNAPSHOT roboguice с версией r6 библиотеки compatibilitybity-v4 против Android 2.2.1.

0 голосов
/ 15 декабря 2011

Roboguice 1.x не совместим с библиотекой и фрагментами. Вам придется либо перейти на бета-версию 2.0, либо самостоятельно расширить классы Fragment *.

Более подробная информация доступна по адресу:

http://groups.google.com/group/roboguice/browse_thread/thread/2858bc10b83b6beb

...