我是Kotlin和Mobile Development的初学者,所以我决定通过编写类似Instagram这样的大型项目来开始学习它。因此,我开始编写EditProfileActivity,它必须从数据库中检索数据。但是,由于某种原因,它只是没有这样做。对于这个愚蠢的问题,我感到抱歉,但是我很乐意解决它!
package com.example.instagram
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.TextView
import com.example.instagram.models.User
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.database.*
import kotlinx.android.synthetic.main.activity_edit_profile.*
class EditProfileActivity : AppCompatActivity() {
private val TAG = "EditProfileActivity"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_edit_profile)
Log.d(TAG, "onCreate: ")
close_image.setOnClickListener{
finish()
}
val auth = FirebaseAuth.getInstance()
val user = auth.currentUser
val dataRef = FirebaseDatabase.getInstance().getReference("users").child(user!!.uid)
dataRef.addListenerForSingleValueEvent(object: ValueEventListener {
override fun onDataChange(data: DataSnapshot) {
Log.d(data.exists().toString(), "onDataChange: ")
val user = data.getValue(User::class.java)
name_input.setText(user!!.name, TextView.BufferType.EDITABLE)
username_input.setText(user.username, TextView.BufferType.EDITABLE)
website_input.setText(user.website, TextView.BufferType.EDITABLE)
bio_input.setText(user.bio, TextView.BufferType.EDITABLE)
email_input.setText(user.email, TextView.BufferType.EDITABLE)
phone_input.setText(user.phone.toString(), TextView.BufferType.EDITABLE)
}
override fun onCancelled(error: DatabaseError) {
Log.e(TAG, "onCancelled: ", error.toException())
}
})
Log.d(TAG, "Finished: ")
}
}