我想单击一个按钮,该按钮将从Firebase中提取一些数据,然后我要转到下一个活动,传递包含Firebase数据的数组。我仍然不能全神贯注于异步代码,我希望有人可以以最简单的方式帮助我实现这一目标。
我已经尝试过运行阻塞,暂停功能,等待和异步,但是我似乎无法正确地做到这一点。这是我的点击监听器:
btn_games_quiz.setOnClickListener {
listenForQuestions()
val intent = Intent(this, QuizActivity::class.java)
intent.putExtra("questionArray", questionArray)
startActivity(intent)
}
这是listenForQuestions:
private fun listenForQuestions(){
val current = LocalDateTime.now()
val formatter = DateTimeFormatter.ofPattern("MM")
val formatted = current.format(formatter)
val currentMonth = QuizActivity.months[formatted.toInt()]
val ref = FirebaseDatabase.getInstance().getReference("/quizzes/$currentMonth")
ref.addChildEventListener(object: ChildEventListener {
override fun onChildAdded(p0: DataSnapshot, p1: String?) {
val questionItem = p0.getValue(Question::class.java)
if (questionItem != null) {
questionArray += questionItem
}
}
override fun onCancelled(p0: DatabaseError) {
}
override fun onChildChanged(p0: DataSnapshot, p1: String?) {
}
override fun onChildMoved(p0: DataSnapshot, p1: String?) {
}
override fun onChildRemoved(p0: DataSnapshot) {
}
})
}
朝正确方向的一点将不胜感激。
答案 0 :(得分:0)
尝试使用线程。 新的Runnable();
答案 1 :(得分:0)
我建议在协程中运行它。
对于使用协程的异步编程,请查看此链接。 https://kotlinlang.org/docs/reference/coroutines-overview.html