8

我使用 Gradle 在 Android Studio 上工作。

我的问题是Case Labels 中的非常量字段

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

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

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

4

5 回答 5

18

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

图书馆项目

要在库中使用 Butter Knife,请将插件添加到您的构建脚本中:

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;
...
}

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

希望它会有所帮助

于 2016-08-27T20:06:56.967 回答
11

Butterknife 目前不支持库项目,更多信息请参考https://github.com/JakeWharton/butterknife/issues/100

于 2014-12-02T02:45:10.573 回答
1

如果您的 Fragment 在 Android 库项目中,请阅读以下内容:

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

于 2014-06-05T12:56:51.697 回答
0

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

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

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

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

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

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

于 2016-12-14T07:58:06.973 回答
0

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

但是当我按照步骤配置我的库项目时,我遇到了一些问题,例如 NullPointerException、@onClick 注释标记的函数在单击视图时没有被调用等。

然后我改变了一些东西,终于成功了。参考这个: http: //blog.csdn.net/ytzys/article/details/53243438

于 2016-11-20T11:47:10.323 回答