ButterKnife绑定控件报NullPointException
2017-03-20 16:04
393 查看
使用ButterKnife已经好久了,一直都是一路开绿灯,今天,突然之间就中奖了,或许我应该去买彩票的,咳咳咳,开玩笑。
不过今天确实遇到一个好奇葩的问题,明明控件已经初始化了,但是,在对控件进行操作的时候,部分控件返回的是null,宝宝很纳闷,该如何是好啊。先看看问题吧:
在网上找了很多资料,大部分 都是把矛头指向依赖引入插件的过程(本人声明,引入插件没有问题),我也是依葫芦画瓢,结果越画越迷茫。
最后,无奈,我暂且只能用最为原始的办法将空间再次初始化一遍:
原代码:
修改之后的代码(只是在操作控件前对控件进行判断):
这是暂时我认为最有效,但是也是最笨的办法。
各位博友,如果你有更好的解决方案,欢迎分享,谢谢。
不过今天确实遇到一个好奇葩的问题,明明控件已经初始化了,但是,在对控件进行操作的时候,部分控件返回的是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);
这是暂时我认为最有效,但是也是最笨的办法。
各位博友,如果你有更好的解决方案,欢迎分享,谢谢。
相关文章推荐
- Android:使用ButterKnife注解绑定控件后报NullPointException
- Android ButterKnife绑定控件为null
- Butter Knife 控件绑定
- Android中ViewPager + Fragment使用ButterKnife注解时出现空指针NullPoint的情况
- Eclipse中使用butterknife出现nullPointerException
- Butterknife 绑定控件后,点击事件判断为空,问题解决方法一
- ButterKnife 8.0.1 @BindView 失败,nullpointerexception
- ButterKnife BindView 失败,报错NullPointerException
- 使用ButterKnife+Zelezny快速创建View对象并绑定控件
- Butterknife @OnClick绑定多控件id
- 解决Android Studio 3.0.1 下使用ButterKnife 8.8.1版本出现 nullpointerexception 等异常问题
- ButterKnife点击事件无效或控件绑定为空
- Butterknife bindview @OnClick绑定多控件id
- ButterKnife 8.4.0 @BindView 失败,nullpointerexception
- ButterKnife 8.0.1 @BindView 失败,nullpointerexception
- 关于butterknife8.0.1提示NullPointerException空指针的问题
- Android Butterknife 8.4.0 使用时报错java.lang.NullPointerException
- ButterKnife 8.0.1 @BindView 失败,nullpointerexception
- Android中ViewPager + Fragment使用ButterKnife注解时出现空指针NullPoint的情况
- ButterKnife.bind(this)发生NullPointerException