Отправка данных в базу данных firebase в реальном времени в приложении Kotlin для Android

#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/4a94a01e3c2510298ee46d0a7f90ab75

2. Вы пробовали то, о чем просил Фрэнк ван Пуффелен? У вас есть что-то распечатанное в логате?

3. Я попробовал, и в журналах ничего не появилось.