錯誤: Document references must have an even number of segments, but Users has 1
我一直在這里和不同的論壇上查看不同的帖子,但在第一次加載時都有問題,但我的問題是在我注銷或重置密碼之后。當我從firebase加載內容時,我得到了資訊,但是當我點擊退出然后再次登錄時它崩潰了,我得到了這個錯誤。我已經記錄了 users.uid 和 Document 參考,并且在注銷后沒有更改。
我的收集路徑是用常量完成的,所以我沒有錯誤型別。
我發現錯誤出現在我的應用程式的 Fragment 端,FirestoreClass().loadUserData_fragment(this)
因為在注銷后注釋這一行將允許應用程式運行,但在活動中,資料仍然可以作為活動加載資料加載,并且片段是一樣,所以我不明白為什么它在退出后不會加載到片段中,但會在第一次加載。
分段
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
FirestoreClass().loadUserData_fragment(this)
}
活動
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityUpdateProfileBinding.inflate(layoutInflater)
val view : LinearLayout = binding.root
setContentView(view)
setupActionBar()
FirestoreClass().loadUserData(this)
}
獲取當前用戶 ID
fun getCurrentUserID():String{
// auto login
var currentUser = FirebaseAuth.getInstance().currentUser
var currentUserId = ""
if (currentUser != null){
currentUserId = currentUser.uid
Log.i("uis",currentUser.uid)
}
return currentUserId
}
活動版
fun loadUserData(activity:Activity){
mFireStore.collection(Constants.USERS)
.document(getCurrentUserID())
.get()
.addOnSuccessListener { document ->
val loggedInUser = document.toObject(User::class.java)!!
Log.i("uis",getCurrentUserID() Constants.USERS)
when(activity){
is UpdateProfileActivity ->{
activity.setUserDataInUI(loggedInUser)
}
is LoginActivity -> {
// Call a function of base activity for transferring the result to it.
activity.userLoggedInSuccess(loggedInUser)
}
}
}
}
片段版本
fun loadUserData_fragment(fragment: Fragment){
mFireStore.collection(Constants.USERS)
.document(getCurrentUserID())
.get()
.addOnSuccessListener { document ->
val loggedInUser = document.toObject(User::class.java)!!
Log.i("uis",getCurrentUserID() Constants.USERS)
when(fragment){
is HomeFragment ->{
fragment.setUserDataInUIFragment(loggedInUser)
}
}
}
}
uj5u.com熱心網友回復:
似乎您getCurrentUserID()沒有回傳任何值,而您沒有在代碼中處理。最好的選擇是僅loadUserData在有活動用戶時呼叫,但您也可以檢查是否getCurrentUserID()回傳值:
fun loadUserData(activity:Activity){
if (getCurrentUserID() != "") { // ??
mFireStore.collection(Constants.USERS)
.document(getCurrentUserID())
.get()
.addOnSuccessListener { document ->
...
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/406217.html
標籤:
