onViewCreated с библиотекой совместимости

В приложении для Android у меня реализован фрагмент, который переопределяет onViewCreated, чтобы настроить некоторые OnClickListeners после того, как представление появится.

Все это отлично работает, когда я реализую. Однако, как только я добавляю библиотеку совместимости v4 r3, кажется, что метод вообще не вызывается.

На данный момент я переношу свои настройки в onResume, но это действительно не идеально. Итак, вот мои вопросы:

  • Это ошибка в библиотеке совместимости?

  • Есть ли лучший обходной путь?

Еще немного покопавшись и попробовав разные вещи, я получил эту трассировку стека, которая позволяет мне поверить, что это действительно ошибка в библиотеке совместимости.

10-07 14:25:11.130: ERROR/AndroidRuntime(2964): FATAL EXCEPTION: main
        java.lang.NoSuchMethodError: android.support.v4.app.Fragment.onViewCreated
        at roboguice.fragment.RoboFragment.onViewCreated(RoboFragment.java:18)

Но еще более странно. Глядя на источник библиотеки совместимости, этот метод действительно существует, но он пуст.


person Manfred Moser    schedule 07.10.2011    source источник
comment
почему бы вам не установить прослушиватели кликов в onCreateView().   -  person Macarse    schedule 08.10.2011
comment
потому что это слишком рано .. Я использую roboguice, и инъекция должна произойти в первую очередь. Если подумать.. Я мог бы сделать это.   -  person Manfred Moser    schedule 08.10.2011
comment
Нет... инъекция происходит в RoboFragment в onViewCreated и никогда не вызывается...   -  person Manfred Moser    schedule 08.10.2011
comment
ой. Я думаю, вам нужно будет выпустить ошибку :(   -  person Macarse    schedule 08.10.2011
comment
Хотя библиотека совместимости не претендует на поддержку onViewCreated. Разве вы не можете настроить слушателей в onActivityCreated?   -  person PJL    schedule 14.10.2011


Ответы (1)


После долгих поисков и отладки я нашел проблему. Оказывается, я использовал старую версию библиотеки совместимости в своем проекте. Теперь я обновил свой проект, и все работает нормально. Для справки необходимо изменить зависимость библиотеки совместимости в файле maven pom, чтобы она была такой

        <dependency>
            <groupId>android.support</groupId>
            <artifactId>compatibility-v4</artifactId>
            <version>r3</version>
        </dependency>

с библиотекой, развернутой в репозитории Maven с помощью Maven Android SDK Deployer. Я также обновил вики roboguice и привязал суть к моей учетной записи github.

person Manfred Moser    schedule 18.10.2011
comment
См. simpligility.com/2012/01/. для получения подробной информации о том, как избежать необходимости использовать Maven Android SDK Deployer. - person emmby; 15.03.2012
comment
У меня такая же проблема с гораздо более новой версией совместимости, r10. Это не очень большая проблема, потому что я могу легко связать/сделать что-то в другом месте, но все же... - person Thomas Keller; 29.08.2012
comment
Хорошо, я был неправ. Это это проблема, потому что внедрение представлений сразу после внедрения элементов, не являющихся представлениями, в пользовательской реализации не работает. - person Thomas Keller; 29.08.2012