【问题标题】:Roboguice, ADT 14+, and Android library projectsRoboguice、ADT 14+ 和 Android 库项目
【发布时间】:2011-11-14 08:30:01
【问题描述】:

Roboguice 是一个整理样板 Android 视图代码的简洁小工具。

我喜欢使用 @InjectView 注释,这样我就不必像这样初始化我的活动的 onCreate() 方法中的每个视图字段:

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

作为 Google 对 ADT 14+ 库项目的全面更改的一部分(总体而言这是一个值得欢迎的改进),生成的 R 类中的 id 字段不再是最终的。

所以现在当您想在库项目中使用 Roboguice 时,@InjectView 注释不再编译,因为注释是在编译时处理的,R.id.title 不再是最终的。

无赖...

还有其他人在使用 Roboguice 并有创造性的解决方法吗?

【问题讨论】:

    标签: android roboguice


    【解决方案1】:

    Android Annotations 支持基于资源名称的注入和编译时检查。

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

    【讨论】:

    • 对于重构支持还是很烦,但至少会产生编译时错误!
    【解决方案2】:

    我猜你最好的办法是关注 roboguice 上的这个错误报告,看看他们想出了什么样的解决方案: http://code.google.com/p/roboguice/issues/detail?id=139&sort=-id

    【讨论】:

    • 我想现在没有解决方法。不幸。
    【解决方案3】:

    RoboGuice 的建议是将 ID 引用替换为 TAG 引用:http://code.google.com/p/roboguice/wiki/LibraryProjects

    【讨论】:

    • 注意到了,尽管我认为这对于潜在的重构变化来说是不可接受的脆弱。
    • 同意,任何问题都会在运行时,在消费者应用程序中被发现。呃。
    • 同意,不要拍信使,我确实提到这是RoboGuice自己推荐的对吧? :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-15
    • 2012-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多