【发布时间】:2012-11-16 02:40:44
【问题描述】:
这是我希望我的应用程序在平板电脑上执行的操作。 片段 (0) 有一些菜单可以显示片段 (1)...(n),如下所示:
-----------------
| | | | |
| | | | |
|(0)| X | X | X |
| | | | |
| | | | |
-----------------
becomes
-----------------
| | | | |
| | | | |
|(0)|(1)| X | X |
| | | | |
| | | | |
-----------------
and then
-----------------
| | | | |
| | | | |
|(0)|(2)|(1)| X |
| | | | |
| | | | |
-----------------
etc...
Fragment0 从不移动,其他的向右移动。离开右侧边缘的碎片将被销毁。
所以我使用水平 LinearLayout 设置我的 XML 布局,并包含 4 个具有正确 ID 的 FrameLayout (fragment0...fragment3)
我可以实例化并显示fragment0,然后显示fragment1,但我无法将其向右移动,我得到:
ERROR/AndroidRuntime(343): FATAL EXCEPTION: main
java.lang.IllegalStateException: Can't change container ID of fragment ...
我发现的唯一相关问题是this one 和that one,尝试了所有提供的不同解决方案,但没有成功。
尝试了FragmentTransaction.remove(),然后是.add(),尝试了.replace(),以不同的顺序尝试了它们并在中途提交(甚至尝试按照某人的建议提交两次),尝试调用addToBackStack() ...还是没有运气。
问题是是否可以像这样使用 FragmentTransaction 移动片段。如果是的话,我做错了什么(还有奖金,是否可以制作动画?)。如果不是,那么实现这一点的正确方法是什么?
请注意,我不想每次都重新实例化片段(每个片段都会在网络上执行一些可能需要一些时间的查询)。可以将所有数据提取回活动以重新创建一个,但如果可能的话我宁愿不这样做......
【问题讨论】:
标签: android android-fragments viewgroup fragmenttransaction