класс даты из базы данных реального времени не заполнен

# #firebase #kotlin

Вопрос:

Я не могу заполнить класс даты из базы данных. Я не понимаю, почему это не работает, кажется, все написано правильно. В функции initUser заполняется дата класса модели пользователя, но если вы запишете пользовательскую переменную в println, она будет пустой. Ниже приведен код класса MainActivity, который имеет функцию initUser

 class MainActivity : AppCompatActivity() {

private lateinit var btn_settings: ImageButton
private lateinit var btn_add_friend: ImageButton
private lateinit var btn_search_main: ImageView
private lateinit var search_main: EditText
private lateinit var nickname_main: TextView
private lateinit var Id_main: TextView


override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    initFirebase()
    initUser()
    init()
    initFunc()
    
    btn_settings.setOnClickListener {
        val intent = Intent(this, SettingsActivity::class.java)
        startActivity(intent)
    }
    btn_search_main.setOnClickListener {
        if (search_main.text.toString() == "Happy") {
            val intent = Intent(this, psh::class.java)
            startActivity(intent)
        }
    }
    
    nickname_main.text = USER.username
    Id_main.text = CURRENT_UID

    println(USER)
}

private fun initFunc() {
    if (AUTH.currentUser != null) {
    } else {
        val intent = Intent(this, LoginActivity::class.java)
        startActivity(intent)
    }

}


private fun init(){
    btn_settings = findViewById(R.id.btn_settings)
    btn_add_friend = findViewById(R.id.btn_add_friend)
    btn_search_main = findViewById(R.id.btn_search_main)
    search_main = findViewById(R.id.search_main)
    nickname_main = findViewById(R.id.nickname_main)
    Id_main = findViewById(R.id.Id_main)
}

private fun initUser(){
    REF_DATABASE_ROOT.child(NODE_USERS).child(CURRENT_UID)
            .addListenerForSingleValueEvent(AppValueEventListener{
                USER = it.getValue(UserModel()::class.java) ?:UserModel()
            })


}

fun initFirebase(){
    AUTH = FirebaseAuth.getInstance()
    REF_DATABASE_ROOT = FirebaseDatabase.getInstance("https://ert-d167-default-rtdb.europe-west1.firebasedatabase.app").reference
    USER = UserModel()
    CURRENT_UID = AUTH.currentUser?.uid.toString()
}
    }
    
class AppValueEventListener (val onSuccess:(DataSnapshot)->Unit) : ValueEventListener{
    override fun onCancelled(error: DatabaseError) {

}
override fun onDataChange(snapshot: DataSnapshot) {
    onSuccess(snapshot)
}

}

data class UserModel(
        var id: String = "",
        var username: String = ""
)
 

Если вы введете пользовательскую переменную в печать, это будет Модель пользователя(id=, имя пользователя=)

введите описание изображения здесь

Данные в базе данных являются

Комментарии:

1. «Если вы введете пользовательскую переменную в печать, это будет Модель пользователя(id=, имя пользователя=)» Можете ли вы отредактировать свой вопрос (прямо под ним есть ссылка), чтобы показать, как вы это делаете? Пожалуйста, не добавляйте больше отдельных фрагментов, так как трудно понять, как они связаны (и у меня такое чувство, что это может иметь отношение к вашей проблеме). Попробуйте показать код в одном фрагменте, который мы можем скопировать/вставить, чтобы получить ту же проблему, что и у вас.

2. Кроме того, этот последний фрагмент выглядит так , как будто у вас есть ошибка копирования/вставки с C и URRENT_UID , поэтому вы, возможно, захотите исправить и это.

3. Я сделал все в одном коде

4. Спасибо. Я не вижу никакого кода, регистрирующего пользователя, который соответствовал бы вашему «Если вы введете пользовательскую переменную в печать, это будет модель пользователя(id=, имя пользователя=)», хотя. Можете ли вы показать нам, как вы получили этот результат?

5. Не говорите нам, что у вас там есть код, но отредактируйте свой вопрос, чтобы показать точный код и его вывод, пожалуйста. Как было сказано ранее, имеет значение, где находится этот код, а код — это наиболее вероятный способ, с помощью которого мы, скорее всего, увидим, что происходит не так.