Butter Knife - 在Android lib上注入

时间:2014-05-27 11:47:54

标签: android android-studio gradle android-gradle butterknife

我使用Gradle在Android Studio上工作。

我的问题是Non-constant Fields in Case Labels

当我在Android lib中使用Butter Knife时,我收到以下错误:

tutuFragment.java:31: error: attribute value must be constant
    @InjectView(R.id.noContactTV)

有没有人遇到过同样的问题,如果有的话,有解决方案吗?

5 个答案:

答案 0 :(得分:15)

根据https://github.com/JakeWharton/butterknife

  

图书馆项目

     

要在库中使用Butter Knife,请将插件添加到您的buildscript中:

buildscript {
  repositories {
    mavenCentral()
   }
  dependencies {
    classpath 'com.jakewharton:butterknife-gradle-plugin:8.4.0'
  }
}
     

然后将其应用到您的模块中:

apply plugin: 'com.android.library'
apply plugin: 'com.jakewharton.butterknife'
     

现在确保在所有Butter Knife中使用R2而不是R.   注释

class ExampleActivity extends Activity {
  @BindView(R2.id.user) EditText username;
  @BindView(R2.id.pass) EditText password;
...
}

现在可以在Android库中使用Butterknife注入。

希望它会有所帮助

答案 1 :(得分:10)

Butterknife目前不支持图书馆项目,请参阅https://github.com/JakeWharton/butterknife/issues/100了解更多信息。

答案 2 :(得分:1)

如果你的片段在Android库项目中,请阅读:

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

答案 3 :(得分:0)

官方github页面有解决方案:https://github.com/JakeWharton/butterknife

但是当我遵从配置我的图书馆项目的步骤时,我遇到了一些问题, 例如NullPointerException,单击视图等时不会调用由@onClick annotition标记的函数。

然后我改变了一些事情,最后成功了。请参阅:http://blog.csdn.net/ytzys/article/details/53243438

答案 4 :(得分:0)

我遇到过同样的问题。每当我写作时,我都会收到此错误。

@BindView(R.id.pager) ViewPager pager;

或视图的任何其他类似语法。

导致此错误的原因是导入到我的java文件中的R文件来自不同的包。

现在问题是为什么导入的R文件来自不同的包?

这是因为我将我的项目用作另一个项目的库。在制作库的过程中,我给出了不同的包名。