android - 尝试在空对象引用上调用接口方法“java.lang.Object[] java.util.Collection.toArray()”(仅在发布时)
问题描述
我在我的项目中使用 Kotlin。我只在发布版本上收到此错误。在调试版本中,一切正常。它发生在这一行:
postList.addAll(response.body()!!.data)
我之前是这样初始化的:
val postList: MutableList<Post> = mutableListOf()
知道为什么会这样吗?
这是完整的代码
private fun initRecyclerView(){
adapter = PostsAdapter(context!!, postList)
val linearLayoutManager = LinearLayoutManager(context)
rvPosts.layoutManager = linearLayoutManager
rvPosts.adapter = adapter
}
private fun getPosts(){
swipToRefresh.isRefreshing = true
disposable.add(
apiService.getPostsFeed(
Config.token)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(object: DisposableSingleObserver<Response<PostData>>() {
override fun onSuccess(response: Response<PostData>) {
swipToRefresh.isRefreshing = false
when {
response.isSuccessful -> {
postList.clear()
if(response.body() != null){
postList.addAll(response.body()!!.data)
adapter.notifyDataSetChanged()
noPostsLayout.visibility = View.GONE
}
}
response.code() == 404 -> {
noPostsLayout.visibility = View.VISIBLE
}
else -> {
Toast.makeText(
context,
getString(R.string.error_general_failure),
Toast.LENGTH_LONG
).show()
noPostsLayout.visibility = View.GONE
}
}
}
override fun onError(e: Throwable) {
Timber.d("onError ${e.message}")
swipToRefresh.isRefreshing = false
if(!Config.isNetworkConnected(context!!)){
Toast.makeText(context, getString(R.string.error_internet_connection), Toast.LENGTH_LONG).show()
}else{
Toast.makeText(context, getString(R.string.error_server_connection), Toast.LENGTH_LONG).show()
}
}
})
)
}
解决方案
尝试postList.addAll(response.body()?.data?)
或postList.addAll(response.body()!!.data?)
推荐阅读
- windows - Jenkins 加载外部 groovy 脚本:powershell 和 bat 步骤挂起
- c - C - 莫尔斯电码程序中的字符串分段错误
- php - 引导字体的 Yii2 BaseUrl
- python - 在python中求解线性方程
- javascript - 我们可以在他们的商家帐户的某处使用开关来忽略 URL 中的所有参数吗?
- bash - for 循环遍历名称中带有空格的文件
- javascript - 将下拉选项显示为扩展按钮 - PHP JS
- youtube-analytics-api - 仍然无法提高 YouTube Analytics API 配额?
- redis - 调试 Redisson 订阅超时
- odoo - 未知报告类型:xlsx:- Odoo 10