【发布时间】:2013-03-27 10:26:31
【问题描述】:
我可以先将片段添加到视图,然后“分离”它,然后“重新附加”到另一个视图吗?
在代码中,我想:
fragOne one = new fragOne();
getSupportFragmentManager().beginTransaction()
.add(R.id.left, one, "tag").commit();
getSupportFragmentManager().beginTransaction()
.detach(one).commit(); // or .remove(), or .addToBackStack(null).remove()
getSupportFragmentManager().executePendingTransactions();
getSupportFragmentManager().beginTransaction()
.add(R.id.right, one).commit();
但它会抛出错误:
04-05 13:28:03.492: E/AndroidRuntime(7195): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.trybackstack/com.example.trybackstack.MainActivity}: java.lang.IllegalStateException: Can't change container ID of fragment fragOne{40523130 #0 id=0x7f080000 tag}: was 2131230720 now 2131230721
感谢您的帮助!
【问题讨论】:
-
您正面临此异常,因为您使用两个不同的 id 用于片段容器(即 R.id.right 和 R.id.left)来添加“片段一”。使用一个 id容器..
-
确实如此。但我想将该片段从左向右移动。
-
在这种情况下,您需要先提交上一个事务,然后再次开始一个新事务以将相同的片段添加到不同的视图
-
我想我做到了,正如你所说的那样。最后一行是导致该异常的行。这是一笔新交易。
-
我刚刚尝试了一个新的解决方案。我认为它会起作用..来聊天
标签: android android-layout android-fragments android-fragmentactivity fragmenttransaction