my connecter:
interface SettingsVMRepConnector {
fun getUserEmail(email: String)
}
in my viewmodel:
class MyViewModel: ViewModel(), SettingsVMRepConnector
{
private val repository= SettingsRepository(this)
private var inputUserEmail= MutableLiveData<String?>()
fun getInputUserEmail(): LiveData<String?> {return inputUserEmail}
...
init{
repository.findUserEmail()
}
override fun getUserEmail(email:String) {
inputUserEmail.value = email
println(inputUserEmail.value.toString()+"...")
}
}
in my fragment:
val email : String = viewModel.getInputUserEmail().value.toString()
println("here: "+email)
emailInput.setText(email)
and in repository:
class SettingsRepository(val connector: SettingsVMRepConnector){
private val userID= Hawk.get<String>(Constants.LOGGEDIN_USERID)
private val usersRef: DatabaseReference = FirebaseDatabase.getInstance().getReference().child("Users")
fun findUserEmail(){
usersRef.child(userID).addValueEventListener(object : ValueEventListener {
override fun onDataChange(snapshot: DataSnapshot) {
var email = snapshot.child(Constants.R_USEREMAIL).value.toString()
connector.getUserEmail(email)
return
}
override fun onCancelled(error: DatabaseError) {
TODO("Not yet implemented")
}
})
}
}
output is:
here: null
james@gmail.com...
I want to see this email in fragment. Why is returns null? And how can I see this e mail in my fragment?