APP启动触发RecyclerView.setAdapter空对象引用报错崩溃如何解决?
错误原因
- 报错的核心原因是调用
setAdapter方法的RecyclerView对象为空,本质是对还未完成初始化的控件执行操作,常见触发场景有三类:- 调用
setAdapter前没有执行控件绑定操作,或者findViewById中填写的控件ID和布局文件里RecyclerView的实际ID不匹配 - 控件绑定操作写在了
setContentView之前,此时Activity还未加载对应布局,无法找到控件,返回值自然为null - Activity加载的布局文件中根本没有对应ID的RecyclerView控件,绑定操作返回空值
- 调用
修复步骤
- 先定位到MainActivity.java第43行附近的代码,调整执行顺序,必须保证
setContentView在所有控件绑定操作之前执行,正确代码示例如下:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 第一步:先加载Activity对应的布局文件 setContentView(R.layout.activity_main); // 第二步:绑定RecyclerView控件 RecyclerView recyclerView = findViewById(R.id.your_recycler_id); // 第三步:初始化适配器后再设置给RecyclerView YourCustomAdapter adapter = new YourCustomAdapter(dataList); recyclerView.setAdapter(adapter); }
- 核对你项目中
activity_main.xml布局文件里RecyclerView的android:id属性值,确保和findViewById中引用的R值完全一致,避免拼写错误 - 如果你使用了ViewBinding、ButterKnife等第三方控件绑定框架,确认框架的初始化操作已经在设置适配器之前完成,没有绑定失败的问题
内容的提问来源于stack exchange,提问作者Akash Kumar
相关产品推荐
相关产品推荐

