首页 > 解决方案 > 尝试在空对象引用上调用接口方法“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()
                        }
                    }

                })
        )

    }

标签: androidkotlinarraylist

解决方案


尝试postList.addAll(response.body()?.data?)postList.addAll(response.body()!!.data?)


推荐阅读