Как использовать одно действие для разных пользователей одновременно с Firebase - PullRequest
0 голосов
/ 30 апреля 2020

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

private  lateinit var profileId: String  //initialization...

в onCreate ...

firebaseUser= FirebaseAuth.getInstance().currentUser!!
        val pref = getSharedPreferences("PREF", Context.MODE_PRIVATE)
        if (pref != null)
        {
            this.profileId = pref.getString("profileId", "none").toString()
        }

onStop ...

override fun onStop() {
        super.onStop()
        val pref = getSharedPreferences("PREF", Context.MODE_PRIVATE)?.edit()
        pref?.putString("profileId", firebaseUser.uid)
        pref?.apply()
    }

метод для получения информация как userInfo вызывается в oncreate

private fun userInfo() {
        val userRef = FirebaseFirestore.getInstance().collection("Users").document(profileId)
        userRef.get()
                .addOnSuccessListener { documentSnapshot ->
                    if (documentSnapshot != null && documentSnapshot.exists()) {
                       val user = documentSnapshot.toObject(User::class.java)
                        profile_fullname?.text = user.getFullname()
                        profile_about?.text = user.getAbout() 
                    } 
           }
 }

И вот как я собираюсь перейти от адаптера к другому пользователю (активность профиля).

 holder.itemView.setOnClickListener {
           val pref = mContext.getSharedPreferences("PREF", Context.MODE_PRIVATE).edit()
               pref.putString("profileId", user.getUid())
               pref.apply()
           val intent = Intent(mContext, ProfileActivity::class.java )
            mContext.startActivity(intent)
    }

И это операция выхода из системы

logoutButton.setOnClickListener {
            FirebaseAuth.getInstance().signOut()
            val intent = Intent(this@EditProfileActivity, LoginActivity::class.java)
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK)
            startActivity(intent)
            finish()
        }

1 Ответ

0 голосов
/ 01 мая 2020

Вам нужно будет удалить profileId из общих настроек, когда пользователь выйдет из системы:

logoutButton.setOnClickListener {
    FirebaseAuth.getInstance().signOut()

    val pref = getSharedPreferences("PREF", Context.MODE_PRIVATE)
    if (pref != null) {
        SharedPreferences.Editor editor = pref.edit();
        editor.remove("profileId");
        editor.apply();
    }

    val intent = Intent(this@EditProfileActivity, LoginActivity::class.java)
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK)
    startActivity(intent)
    finish()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...