Butter Knife java.lang.NullPointerException

14 篇文章 0 订阅

    进过测试,按JakeWharton/butterknife: Bind Android views and callbacks to fields and methods.   点击打开链接的说明文档在app模块使用是没有问题的。
    但是,我想在library中使用Butter Knife,按照GitHub上的说明,应该像@BindView(R2.id.tv_search)这样使用R2代替R来进行使用。这下出现问题了:
E/AndroidRuntime: FATAL EXCEPTION: main
                                                   java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.administrator.myapplication01/com.example.administrator.myapplication01.ButterKnifeTest2Activity}: java.lang.NullPointerException
                                                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2346)
                                                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2398)
                                                       ...
                                                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:853)
                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
                                                       at dalvik.system.NativeStart.main(Native Method)
                                                    Caused by: java.lang.NullPointerException
                                                       at com.example.administrator.myapplication01.ButterKnifeTest2Activity.onCreate(ButterKnifeTest2Activity.java:57)
                                                       at android.app.Activity.performCreate(Activity.java:5226)

    可能是我gradle版本原因,按照Github上的说明引入Butter Knife之后,编译都没问题,运行时发生空指针异常。经过多次尝试,找到了一种解决办法,我不确定是不是标准的,因为我的情况是app模块依赖mylibrary02模块,mylibrary02模块又依赖mylibrary03模块。下面是解决办法:

    1.在项目gradle文件(注意是项目的,不是模块的)中,buildscript -> dependencies下添加:

classpath 'com.jakewharton:butterknife-gradle-plugin:8.8.1'

    2.然后在mylibrary03模块(这是我的项目中的最底层的依赖模块)的gradle文件中添加依赖:

compile 'com.jakewharton:butterknife:8.8.1'//implementation
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'

    并在该文件的头部apply plugin'com.android.library'的下面继续添加上:

apply plugin: 'com.jakewharton.butterknife'
    3.如果你想在mylibrary02模块中(我这里mylibrary02依赖mylibrary03模块)使用Butter Knife,需要同样在该模块的gradle中添上:

apply plugin: 'com.jakewharton.butterknife'

以及依赖:

annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'

    4.如果你想在app模块中使用Butter Knife,则只需要添加上依赖:

annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
    如果在使用R2时出现找不到资源,可能需要Rebuild一下项目,不知道Build一下该模块或项目可不可行,反正我是不想在library中折腾这些了。






  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值