Попытка вызвать метод интерфейса 'java .lang.Object [] java .util.Collection.toArray ()' для ссылки на пустой объект (только в выпуске) - PullRequest
1 голос
/ 06 апреля 2020

Я использую 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()
                        }
                    }

                })
        )

    }

1 Ответ

1 голос
/ 06 апреля 2020

Попробуйте postList.addAll(response.body()?.data?) или postList.addAll(response.body()!!.data?)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...