gpt4 book ai didi

android - Kotlin - 创建连续的 fragment 将数据添加到错误的容器中

转载 作者:行者123 更新时间:2023-11-29 18:25:29 25 4
gpt4 key购买 nike

我有这段代码:

  val fm = supportFragmentManager
val container = R.id.details

this@CampusActivity.runOnUiThread(Runnable {

fm.beginTransaction()
.add(
container,
DetailCard.newInstance("Contacts", contacts, action.contactCardList)
).commit()

fm.beginTransaction()
.add(
container,
DetailCard.newInstance("About", about, action.aboutCard)
).commit()
})

我正在尝试在这两条线上创建具有不同数据的 Detail Card 的新实例。数据保存在 contactsabout 中,因为它们是 Bundle

但不是在两张不同的卡中填充数据,而是将所有数据加载到第一张卡中。

我知道问题所在。

DetailCard 是一个带有 Linear Layout 的 fragment ,其 id 为 listItems。现在,我通过 Bundles 发送的数据用于创建名为 List Item Fragment 的更新 fragment ,最终加载来自 bundle 的数据。

因此,简而言之,List Items 是使用 Bundle 数据创建的,并填充在 Detail Card 中。

但是,由于我正在调用 Detail Card 的多个实例,因此所有列表项都加载到 ID 为 listItems 的第一个线性布局中。

我确信这一点,因为在我将线性布局命名为 listItems 之前,它具有 ID container,它与另一个框架布局重叠且 ID 为 容器。因此,线性布局元素(列表项)被加载到 ID 为 container 的第一个 xml 元素中,而不是我希望的容器...

如何将我的列表项加载到正确的 listItems 中,它对应于详细信息卡的新实例?

最佳答案

因为我知道项目被实例化到第一个 xml 布局中,具有与 fragment 相同的 id,所以最简单的解决方案是每次都更改 id。

所以,我做到了。我进入了我的 DetailCard,在引用 listItems 线性布局之前,我更改了它的 ID。

我是这样做的:


lateinit var itemContainer : LinearLayout

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
val view = inflater.inflate(R.layout.fragment_detail_card, container, false)

//This below is my Linear Layout
itemContainer = view.findViewById(R.id.listItems)

//Since I've already found it, Let's change the ID
//I choose a random and larger number, so that If I even if
//I have a 100 DetailCards, I'll not run out of IDs
itemContainer.id = Random.nextInt(5000)

//Now I just use the ID as the container for the fragment manager, inside Details Card
val container = itemContainer.id

关于android - Kotlin - 创建连续的 fragment 将数据添加到错误的容器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59248125/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com