我在活动中持有两个Fragment实例,将第一个片段添加到activity,然后使用setArgument()和addBackStack()将第二个片段替换为activity,然后按返回按钮。现在我们返回第一个片段,然后我们首先替换活动再次保持的第二个片段,与setArgument()相同,并抛出异常----片段已经激活。 这个过程有什么问题?
答案 0 :(得分:0)
您可以多次或多次调用如果 Fragment
未附加到任何Activity
。
以下代码是从Fragment.java
/**
* Supply the construction arguments for this fragment. This can only
* be called before the fragment has been attached to its activity; that
* is, you should call it immediately after constructing the fragment. The
* arguments supplied here will be retained across fragment destroy and
* creation.
*/
public void setArguments(Bundle args) {
if (mIndex >= 0) {
throw new IllegalStateException("Fragment already active");
}
mArguments = args;
}
只要您希望IF不附加到活动
,您就可以调用该方法答案 1 :(得分:0)
根据setArguments()源文档,提供的参数将在片段销毁和创建中保留。因此,使用getArguments()然后放置bundle值来更改字段。