Проекты Roboguice, ADT 14 и библиотеки Android

#android #roboguice

#Android #roboguice

Вопрос:

Roboguice — это такой аккуратный маленький инструмент для приведения в порядок шаблонного кода Android view.

Мне понравилось использовать @InjectView аннотацию, чтобы мне не приходилось инициализировать каждое поле просмотра в методе onCreate() для моих действий, подобных этому:

 @InjectView(R.id.title) TextView title;
  

В рамках радикальных изменений Google в проектах библиотек для ADT 14 (которые в целом являются долгожданным улучшением) поля идентификаторов в сгенерированных R-классах больше не являются окончательными.

Итак, теперь, когда вы хотите использовать Roboguice внутри библиотечных проектов, @InjectView аннотации больше не компилируются, потому что аннотации обрабатываются во время компиляции и R.id.title больше не являются окончательными.

Облом…

Кто-нибудь еще использует Roboguice и у кого есть творческий обходной путь?

Ответ №1:

Android Annotations поддерживает внедрение на основе имени ресурса с проверкой во время компиляции.

https://github.com/excilys/androidannotations/wiki/Library-projects

Комментарии:

1. Все еще раздражает поддержка рефакторинга, но, по крайней мере, будет сгенерирована ошибка во время компиляции!

Ответ №2:

Я думаю, вам лучше всего следить за этим сообщением об ошибке в roboguice, чтобы узнать, какое решение они предлагают: http://code.google.com/p/roboguice/issues/detail?id=139amp;sort=-id

Комментарии:

1. Я полагаю, что сейчас просто нет обходного пути. Неудачно.

Ответ №3:

Рекомендация RoboGuice заключается в замене ссылок на идентификаторы ссылками на ТЕГИ: http://code.google.com/p/roboguice/wiki/LibraryProjects

Комментарии:

1. Отмечено, хотя я бы счел это неприемлемо хрупким для потенциальных изменений при рефакторинге.

2. Согласен, любые проблемы будут устранены во время выполнения, в потребительском приложении. Тьфу.

3. Согласен, не стреляйте в messenger, я упоминал, что это была собственная рекомендация RoboGuice, верно? 🙂