ButterKnife绑定控件报NullPointException

使用ButterKnife已经好久了,一直都是一路开绿灯,今天,突然之间就中奖了,或许我应该去买彩票的,咳咳咳,开玩笑。
不过今天确实遇到一个好奇葩的问题,明明控件已经初始化了,但是,在对控件进行操作的时候,部分控件返回的是null,宝宝很纳闷,该如何是好啊。先看看问题吧:

java.lang.RuntimeException: Unable to resume activity {com.dht.workunion/com.dht.union.ui.activity.flushBill.alipay.AliChartActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView.setLayoutManager(android.support.v7.widget.RecyclerView$LayoutManager)' on a null object reference
    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3314)
    at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3345)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2659)
    at android.app.ActivityThread.-wrap11(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1488)
    at android.os.Handler.dispatchMessage(Handler.java:111)
    at android.os.Looper.loop(Looper.java:207)
    at android.app.ActivityThread.main(ActivityThread.java:5728)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:808)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView.setLayoutManager(android.support.v7.widget.RecyclerView$LayoutManager)' on a null object reference
    at com.dht.union.ui.activity.flushBill.alipay.AliChartActivity.initRecycleView(AliChartActivity.java:197)
    at com.dht.union.ui.activity.flushBill.alipay.AliChartActivity.afterView(AliChartActivity.java:147)
    at com.dht.union.ui.base.BaseActivity.onResume(BaseActivity.java:129)
    at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1268)
    at android.app.Activity.performResume(Activity.java:6540)
    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3299)
    ... 10 more
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView.setLayoutManager(android.support.v7.widget.RecyclerView$LayoutManager)' on a null object reference
    at com.dht.union.ui.activity.flushBill.alipay.AliChartActivity.initRecycleView(AliChartActivity.java:197)
    at com.dht.union.ui.activity.flushBill.alipay.AliChartActivity.afterView(AliChartActivity.java:147)
    at com.dht.union.ui.base.BaseActivity.onResume(BaseActivity.java:129)
    at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1268)
    at android.app.Activity.performResume(Activity.java:6540)
    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3299)
    at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3345)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2659)
    at android.app.ActivityThread.-wrap11(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1488)
    at android.os.Handler.dispatchMessage(Handler.java:111)
    at android.os.Looper.loop(Looper.java:207)
    at android.app.ActivityThread.main(ActivityThread.java:5728)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:808)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

在网上找了很多资料,大部分 都是把矛头指向依赖引入插件的过程(本人声明,引入插件没有问题),我也是依葫芦画瓢,结果越画越迷茫。
最后,无奈,我暂且只能用最为原始的办法将空间再次初始化一遍:
原代码:

//初始化控件
@BindView(R.id.flush_bill_recyclierview)
RecyclerView flush_bill_recyclierview; //聊天内容框

//操作控件
//创建线性布局
LinearLayoutManager mLayoutManager = new LinearLayoutManager(this);
//垂直方向
mLayoutManager.setOrientation(OrientationHelper.VERTICAL);
//给RecyclerView设置布局管理器
flush_bill_recyclierview.setLayoutManager(mLayoutManager);
//创建适配器
adapter = new FlushBillRecyclerAdapter(this, bitmapUtils, emojiUtils);
//绑定数据
flush_bill_recyclierview.setAdapter(adapter);

修改之后的代码(只是在操作控件前对控件进行判断):

//初始化控件
@BindView(R.id.flush_bill_recyclierview)
RecyclerView flush_bill_recyclierview; //聊天内容框

if (null == flush_bill_recyclierview) {
    flush_bill_recyclierview = ButterKnife.findById(this, R.id.flush_bill_recyclierview);
}

//操作控件
//创建线性布局
LinearLayoutManager mLayoutManager = new LinearLayoutManager(this);
//垂直方向
mLayoutManager.setOrientation(OrientationHelper.VERTICAL);
//给RecyclerView设置布局管理器
flush_bill_recyclierview.setLayoutManager(mLayoutManager);
//创建适配器
adapter = new FlushBillRecyclerAdapter(this, bitmapUtils, emojiUtils);
//绑定数据
flush_bill_recyclierview.setAdapter(adapter);

这是暂时我认为最有效,但是也是最笨的办法。
各位博友,如果你有更好的解决方案,欢迎分享,谢谢。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值