内容来自 DOC https://q.houxu6.top/?s=实例化一个新的Android Fragment的最佳实践
我看到了在应用程序中实例化一个新的Fragment的两种常见做法:
Fragment newFragment = new MyFragment();
和
Fragment newFragment = MyFragment.newInstance();
第二种选项利用了静态方法 newInstance()
,并且通常包含以下方法。
public static Fragment newInstance()
{
MyFragment myFragment = new MyFragment();
return myFragment;
}
起初,我认为主要的好处是我可以在创建Fragment的新实例时重载newInstance()方法以提供灵活性,但这也可以通过为Fragment创建一个重载的构造函数来实现。
我是不是漏掉了什么?
哪种方法更好?还是只是一种好的做法?
如果Android稍后决定重新创建您的Fragment,它将调用您的Fragment的无参数构造函数。因此,重载构造函数并不是一个解决方案。
这样说来,将东西传递给您的Fragment以便在Android重新创建Fragment后仍然可用的方法是将bundle传递给setArguments
方法。
例如,如果我们想将一个整数传递给片段,我们可以使用类似以下的内容:
public static MyFragment newInstance(int someInt) {
MyFragment myFragment = new MyFragment();
Bundle args = new Bundle();
args.putInt("someInt", someInt);
myFragment.setArguments(args);
return myFragment;
}
然后在Fragment的onCreate()
中,您可以通过以下方式访问该整数:
getArguments().getInt("someInt", 0);
即使Fragment被Android以某种方式重新创建,此Bundle也将可用。
还要注意:setArguments
只能在Fragment附加到Activity之前调用。
这种方法也在android开发者参考中进行了记录:https://developer.android.com/reference/android/app/Fragment.html
标签:someInt,Fragment,newInstance,实例,MyFragment,myFragment,Android From: https://www.cnblogs.com/xiaomandujia/p/17808406.html