#android #firebase #kotlin #firebase-realtime-database #mobile
#Android #firebase #kotlin #firebase-realtime-database #Мобильный
Вопрос:
Я пытаюсь создать приложение для викторины для Android, используя Kotlin. Я хочу иметь возможность отправлять результаты каждой попытки игрока в базу данных Firebase в реальном времени.
Пока у меня есть следующий код, но он ничего не отправляет в базу данных:
private lateinit var myRef: DatabaseReference
class ResultActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_result)
@Suppress("DEPRECATION")
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_FULLSCREEN
supportActionBar?.hide()
@Suppress("DEPRECATION")
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
window.insetsController?.hide(WindowInsets.Type.statusBars())
} else {
window.setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN
)
}
val firebase: FirebaseDatabase = FirebaseDatabase.getInstance()
myRef = firebase.getReference("ArrayData")
val username = intent.getStringExtra(Constants.USER_NAME)
tv_name.text = username
val totalQuestions = intent.getIntExtra(Constants.TOTAL_QUESTIONS, 0)
val correctAnswer = intent.getIntExtra(Constants.CORRECT_ANSWERS, 0)
val result = correctAnswer
tv_score.text = "Your result is $correctAnswer out of $totalQuestions"
btn_finish.setOnClickListener {
val username = intent.getStringExtra(Constants.USER_NAME)
val firebaseInput = DatabaseRow(username, result)
myRef.child("Row 1").setValue(firebaseInput)
startActivity(Intent(this, MainActivity::class.java))
finish()
}
}
}
Кто-нибудь знает, что нужно изменить, чтобы оно отправляло имя пользователя игрока и его результат?
Комментарии:
1. Вызовы
setValue
могут завершиться неудачно, например, если они не разрешены вашими правилами безопасности. Для обнаружения таких ошибок вам необходимо добавить прослушиватель завершения. Смотрите gist.github.com/puf/4a94a01e3c2510298ee46d0a7f90ab752. Вы пробовали то, о чем просил Фрэнк ван Пуффелен? У вас есть что-то распечатанное в логате?
3. Я попробовал, и в журналах ничего не появилось.