gpt4 book ai didi

Android FragmentManager beginTransaction.add 添加 fragment 到隐藏容器

转载 作者:行者123 更新时间:2023-11-30 03:08:46 25 4
gpt4 key购买 nike

有一个 MainFragment,其中包含 id = main_container_layout 的 LinearLayout

1.在MainFragment->LinearLayout中添加fragmentWithTypeA

beginTransaction.add(R.id.main_container_layout, fragmentWithTypeA, "555").commit())

fragmentWithTypeA 包含带有 id = container_layout

的 LinearLayout

2.一些 Action ,在主布局中添加一些 fragment

transaction.hide(fragmentWithTypeA)
.add(R.id.main_container_layout, someFragment, tag)
.commit()

3.someFragment中的一些 Action

4.创建anotherFragmentWithTypeA

transaction.hide(someFragment)
.add(R.id.main_container_layout, anotherFragmentWithTypeA, tag)
.commit()

5.在anotherFragmentWithTypeA里面我尝试添加一些内容到LinearLayout

beginTransaction.add(R.id.container_layout, newFragment, "555").commit())

预期结果: newFragment 应该添加到anotherFragmentWithTypeA->LinearLayout

实际结果:newFragment被添加到fragmentWithTypeA->LinearLayout witch在第2步被隐藏了。

最佳答案

一种解决方法是在步骤 4 中创建自定义 ID 后将其设置为 anotherFragmentWithTypeA->LinearLayout。然后在步骤 5 中使用此自定义 ID 作为容器 ID

class FragmentWithTypeA(customContainerId:Int = R.id.container_layout) extends Fragment {
private var _containerLayout : LinearLayout = null

override def onCreateView(inflater:LayoutInflater, container:ViewGroup, savedInstanceState:Bundle ) : View = {
val view = getActivity.getLayoutInflater.inflate(R.layout.frame_id, null)

_containerLayout = view.findViewById(R.id.container_layout).asInstanceOf[LinearLayout]
_containerLayout.setId(customContainerId)

view
}

……

val customContainerId = 7894
val anotherFragmentWithTypeA = new FragmentWithTypeA(customContainerId)

transaction.hide(someFragment)
.add(R.id.main_container_layout, anotherFragmentWithTypeA, tag)
.commit()

.....

getFragmentManager.beginTransaction.add(customContainerId, newFragment, "111").commit 

关于Android FragmentManager beginTransaction.add 添加 fragment 到隐藏容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21330405/

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