【发布时间】:2021-05-17 20:46:43
【问题描述】:
我的 MainActivity 上有一个功能可以从 Firestore 加载用户数据以更新抽屉上的图像,但它仅在我重新启动应用程序时更新,当我更新配置文件片段上的用户详细信息时,详细信息是在 Firebase 上更新,但不在我的抽屉上。我怎样才能改变这个?我正在使用的教程在不同的活动中做所有事情。
以下是我在主要活动上的功能和 FirestoreClass 上的方法
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val toolbar: Toolbar = findViewById(R.id.toolbar)
setSupportActionBar(toolbar)
FirestoreClass().loadUserData(this)
fun updateNavigationUserDetails(user: User){
val ivDrawerImage : ImageView = findViewById(R.id.iv_drawer)
Glide
.with(this)
.load(user.image)
.centerCrop()
.placeholder(R.drawable.ic_user_place_holder)
.into(ivDrawerImage)
val userName : TextView = findViewById(R.id.tv_drawer)
userName.text = user.name
val userEmail : TextView = findViewById(R.id.tv_email_drawer)
userEmail.text = user.email
}
}
class FirestoreClass {
fun loadUserDataOnProfile(fragment: Fragment) {
firestore.collection(Constants.USERS)
.document(getCurrentUserID())
.get()
.addOnSuccessListener { document ->
val loggedUser = document.toObject(User::class.java)
when(fragment) {
is ProfileFragment -> {
fragment.setUserDataInUI(loggedUser!!)
}
}
}
.addOnFailureListener { e ->
Log.e("TAG", "Error ssssss", e)
}
}
fun loadUserData(activity: Activity) {
firestore.collection(Constants.USERS)
.document(getCurrentUserID())
.get()
.addOnSuccessListener { document ->
val loggedUser = document.toObject(User::class.java)
when (activity) {
is SignInActivity -> {
activity.signInSuccess(loggedUser!!)
}
is MainActivity -> {
activity.updateNavigationUserDetails(loggedUser!!)
}
}
}
.addOnFailureListener { e ->
Log.e("TAG", "Error signing in", e)
}
}
class ProfileFragment : Fragment() {
val btnUpdate: Button = view.findViewById(R.id.btn_update)
btnUpdate.setOnClickListener {
if(selectedImageUri != null){
uploadUserImage()
} else {
updateUserProfileData()
}
findNavController().navigate(R.id.action_nav_my_profile_to_nav_home)
}
当我按下 profileFragment 上的 updateButton 时,我想调用 MainActivity 上的 updateNavigationUserDetails()。我该怎么做?
【问题讨论】:
标签: android firebase kotlin android-fragments