Kotlin и Firebase для чтения и записи данных - PullRequest
2 голосов
/ 28 марта 2020

Я выучил Kotlin за 3 недели, поэтому я хотел бы прочитать данные из моей базы данных Firebase.

Это файл MainActivity.kt для записи данных.

val database = Firebase.database
val latitude = latitude.text.toString().toDouble()
    val reflatitude = database.getReference("/user/time/$currenttime/latitude")

    //saved location to the Firebase Database
    reflatitude.setValue(latitude)
        .addOnSuccessListener {
            Log.d("MainActivity", "Saved the diary latitude to Firebase Database")
        }

Это работало хорошо, но когда я хочу вызвать его из другого действия, такого как MapActivity. У него все еще есть некоторые проблемы.

val database = Firebase.database
val reflatitude = database.getReference("/user/time/$currenttime/latitude")
reflatitude.addValueEventListener(object :ValueEventListener){
        override fun onDataChange(dataSnapshot: DataSnapshot){
            val latitude= dataSnapshot.getValue<Double>()
        }
        override fun onCancelled(error: DatabaseError) {
            // Failed to read value
            Log.w(TAG, "Failed to read value.", error.toException())
        }
    }

My Ref не работает при чтении данных.

Я получаю ошибки:

  • Ожидается тело класса

  • Слишком много аргументов для @NonNull publi c open fun addValueEventListener (@NonNull p0: ValueEventListener): ValueEventListener определено в com.google.firebase.database.DatabaseReference

  • Модификатор «переопределить» не применим к «локальной функции»

  • Нет аргументов типа для веселья getValue (): Any?

  • Модификатор «override» не применим к «локальной функции»

  • Невозможно получить доступ к «TAG»: он невидим (приватный в супертипе) в 'AppCompatActivity'

1 Ответ

1 голос
/ 28 марта 2020

Попробуйте этот код:

    val database = Firebase.database
    val reflatitude = database.getReference("/user/time/$currenttime/latitude")
    reflatitude .addValueEventListener(object : ValueEventListener { 
    override fun onDataChange(dataSnapshot: DataSnapshot){
                val latitude= dataSnapshot.getValue<Double>()
            }
            override fun onCancelled(error: DatabaseError) {
                // Failed to read value
                Log.w(TAG, "Failed to read value.", error.toException())
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...