【发布时间】:2021-02-10 19:17:02
【问题描述】:
我想将 MainActivity 中的对象数组列表传递给我的 OverviewFragment。类如下。
@Parcelize
data class User(
val id: String? = null,
val firstName: String? = null,
val lastName: String? = null,
val email: String? = null,
val WSC_Member: Boolean? = false,
val Landesliga: Boolean? = false,
val Superuser: Boolean? = false
) : Parcelable {
fun getName(): String? {
return "$firstName $lastName"
}
}
在 MainActivity 的 onCreateView 中,我通过函数 getUsersData 获取所有用户并将其传递给 bundle
val overviewFragment: Fragment = OverviewFragment()
val fragmentManager: FragmentManager = supportFragmentManager
val data = Bundle()
// Get all users
GlobalScope.launch(Dispatchers.IO) {
val allPlayers = getUsersData(userDocs)
data.putParcelableArrayList("allPlayers", allPlayers)
overviewFragment.arguments = data
fragmentManager.beginTransaction().replace(
R.id.overviewLayout,
overviewFragment,
"overviewFragment"
).addToBackStack(null).commit()
}
getUsersData函数:
suspend fun getUsersData(UserCollection: CollectionReference): ArrayList<User> {
val snapshot = UserCollection.get().await()
val allPlayers = arrayListOf<User>()
snapshot.documents.forEach { playerI ->
val userI = User(
playerI.id,
playerI.getString("firstName"),
playerI.getString("lastName"),
playerI.getString("email"),
playerI.getBoolean("WSC_Member"),
playerI.getBoolean("Landesliga"),
playerI.getBoolean("Superuser")
)
allPlayers.add(userI)
}
return allPlayers
}
在OverviewFragmentsonCreateView
val data = arguments
val allPlayers = data?.getParcelableArrayList<User>("allPlayers")
val test1 = allPlayers?.count()
Log.i(TAG, "Test1: $test1")
我尝试获取数据,但它仍然是null。我错过了什么?
I/OverviewFragment: Test1: null
【问题讨论】:
标签: android firebase android-studio kotlin