这是一个非常奇怪的问题,在发布之前我一直在挠头。
直接遇到问题:我的活动中LinearLayout
内有ScrollView
我使用FragmentManager
将我的片段抽入布局,每个片段都有其独特的标签和用户界面,代码效果很好。
...
for(object o: my_data)
{
MyFragment f = MyFragment.newInstance(o.blah());
Log.w("app","adding object "+o.tag_name()+"to the list");
transaction.add(R.id.my_linear_layout_id, f, o.tag_name());
}
transaction.commit();
假设我有3个带有标签的对象" 1"," 2"," 3"在my_data中。上面代码的结果将以正确的顺序1,2,3显示我的碎片。在我的UI中,它们是从LinearLayout顶部到底部的1,2,3。像
1 2 3
当我尝试删除所有片段并再次使用相同的代码添加它们时,会出现奇怪的问题。(如刷新)
...
ft = frag_manager.beginTransaction();
for(object o: my_data)
{
ft.remove(frag_manager.findFragmentbyTag(o.tag_name()));
}
ft.commit();
结果将在我的LinearLayout上从上到下反转:
第3 2 1
虽然我的日志显示1,2,3已分别添加到布局中。
我多次尝试并测试代码,发现第一次结果总是正确的,但是在任何全部删除操作之后,新结果将被反转,结果将不再正确。这个问题背后的原因是什么?我错过了什么?这是疯狂的imo。
答案 0 :(得分:0)
单个FragmentTransaction上的操作顺序并非始终受到尊重。
您应该尝试在每个操作中创建新闻FragmentTransacion并按您所需的顺序提交它们。 Related link