错误:Document references must have an even number of segments, but Users has 1
我一直在查看不同的帖子,在这里和不同的论坛上,但都有问题时,第一次加载,但我的问题是,在我注销或重置密码。当我从firebase加载内容时,我得到了信息,但是当我单击“退出”,然后再登录,它崩溃了,我得到了这个错误。我已经记录了users.uid和文档引用,并且在注销后不会更改。
我的收集路径是用常量完成的,所以我没有错误类型。
我已经发现,错误在我的应用程序在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)
}GetCurrentUserID
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)
}
}
}
}发布于 2022-01-08 19:22:53
您的getCurrentUserID()似乎没有返回任何值,您在代码中没有处理这个值。最好的选择是只在有活动用户时调用loadUserData,但也可以检查getCurrentUserID()是否返回值:
fun loadUserData(activity:Activity){
if (getCurrentUserID() != "") { //
mFireStore.collection(Constants.USERS)
.document(getCurrentUserID())
.get()
.addOnSuccessListener { document ->
...
}
}
}https://stackoverflow.com/questions/70635625
复制相似问题