此问题已在此处有答案:
Why does my function that calls an API or launches a coroutine return an empty or null value?(4个答案)
23天前关闭
我试着把数组添加到一个数组中,里面有一个改进的排队方法。但它不返回数组。我有下面的代码。我不知道我犯了什么错误。
private fun getAllAudio():ArrayList<Music>{
val templList = ArrayList<Music>()
val service = SongFactory.makeSongLists()
val response = service.getAllSongs()
response.enqueue(object :Callback<ArrayList<Music>>{
override fun onResponse(
call: Call<ArrayList<Music>>,
response: Response<ArrayList<Music>>
) {
response.body()?.let {
for (items in it){
var music = Music(items.album,items.artist,items.duration,items.id,items.path,items.songuri,items.title)
templList.add(music)
}
}
}
override fun onFailure(call: Call<ArrayList<Music>>, t: Throwable) {
Toast.makeText(this@MainActivity, "Error ${t.message}", Toast.LENGTH_SHORT).show()
}
})
Log.d("get",templList.toString())
return templList
}
我试着记录我的结果,它显示[]
1条答案
按热度按时间z3yyvxxp1#
你必须在onResponse()函数中返回
templList
,因为reflect需要几毫秒的时间,但这里你返回的是空列表而没有得到响应。