正如每个Android开发人员所知,每次创建自定义Fragment
时,您都不会使用它的构造函数,正如文档所述。所以这样做的方式更像是:
public static BlankFragment newInstance(String param1, String param2) {
BlankFragment fragment = new BlankFragment();
Bundle args = new Bundle();
args.putString(ARG_PARAM1, param1);
args.putString(ARG_PARAM2, param2);
fragment.setArguments(args);
return fragment;
}
public BlankFragment() {
// Required empty public constructor
}
通过工厂方法实例化Fragment
是否有任何特殊原因?
答案 0 :(得分:1)
通过这种方式,您可以将所有初始化代码保存在一个位置,片段通常用于许多活动中,因此这种工厂方法可确保您不会错过任何新添加的参数。
实际上你可以在你的片段中添加构造函数,并将newInstance代码移动到它。问题是android在片段重新创建时不会使用它,所以这样的构造函数可能会混淆一些编码器。
另一方面,如果你想创建参数较少的newInstance()工厂方法,它会使用带有一些init值的setArguments,那么你就无法将它改为构造函数版本,因为android会在片段期间调用你的参数而不是构造函数娱乐。
你可以在这里阅读更多内容:
http://www.androiddesignpatterns.com/2012/05/using-newinstance-to-instantiate.html