Android 片段新实例
嗨,我正在学习碎片,我有一些疑问 V1: 因此,创建新片段的正确方法应该是使用“newInstance”而不是构造函数,如下所示:Android 片段新实例,android,android-fragments,Android,Android Fragments,嗨,我正在学习碎片,我有一些疑问 V1: 因此,创建新片段的正确方法应该是使用“newInstance”而不是构造函数,如下所示: Fragment fragment = MyFragment.newInstance(variable); 类“MyFragment”上的代码应该是: private static final String ARG_PARAM1 = "param1"; private int variable; public MyFragment()
Fragment fragment = MyFragment.newInstance(variable);
类“MyFragment”上的代码应该是:
private static final String ARG_PARAM1 = "param1";
private int variable;
public MyFragment() {
//Empty constructor
}
新实例将接收param,并将它们放在一个Bundle中,并为类设置参数
public static mi_fragment newInstance(Int param1) {
MyFragment fragment = new MyFragment();
Bundle args = new Bundle();
args.putInt(ARG_PARAM1, param1);
fragment.setArguments(args);
return fragment;
}
设置后,onCreate方法将拾取参数:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
variable = getArguments().getInt(ARG_PARAM1);
}
V2:
但我仍然看不到使用构造函数和以编程方式设置参数的问题:
Bundle bundle = new Bundle();
bundle.putInt("key", variable);
Fragment fragment = new MyFragment();
fragment.setArguments(bundle);
然后,我选择方法onCreate上的参数:
public void onCreate(@Nullable Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
Bundle bundle = this.getArguments();
if(bundle!=null){
variable = getArguments().getInt("key");
}
}
所以我决定在互联网上搜索这个,我找到了一个,但我仍然无法理解它,或者你什么时候可以使用它
将内容传递给片段的方法是将bundle传递给setArguments方法,这样在Android重新创建片段后它们就可以使用了
即使Android以某种方式重新创建了该片段,该捆绑包也将可用
因此,我的结论是,让bundle保持活动状态,使用newInstance可以使您返回到最后一个片段。但可能我错了,所以我需要帮助
问题:两者之间的主要区别是什么?您如何从newInstance中获益?举个例子。没有区别。但是newInstance是干净的,当没有真正的区别时,每个人都会抓狂@Hoomaneveryone反对使用片段构造函数来传递数据,而不是使用newInstance或local方法。我认为,类应该是自给自足的。为此,当您在fragment中创建newIntance方法时,该方法本身将负责创建片段并向其传递参数。相反,如果执行后面的操作,则创建一个片段并传递参数。所以,我同意@Hooman。第一种方法是更干净