Fragment
的构造方法通常不建议直接传递参数。我们先来看一下Fragment源码:文章来源:https://www.toymoban.com/news/detail-820450.html
public Fragment() {
}
在源码中会发现,Fragment的构造函数是空的,所以他和普通类的创建对象的方式不太一样。接着我们看源码:文章来源地址https://www.toymoban.com/news/detail-820450.html
public static Fragment instantiate(Context context, String fname) {
return instantiate(context, fname, null);
}
public static Fragment instantiate(Context context, String fname, Bundle args) {
try {
Class<?> clazz = sClassMap .get(fname);
if (clazz == null) {
// Class not found in the cache, see if it's real, and try to add it
clazz = context.getClassLoader().loadClass(fname);
sClassMap .put(fname, clazz);
}
/*获取Bundle原先的值,这样一开始利用Bundle传递进来的值,就放入f. mArguments. 只需要在Fragment中利用getArguments().getString("key");就能将参数取出来继续用 */
Fragment f = (Fragment)clazz.newInstance();
if (args != null) {
args.setClassLoader(f.getClass().getClassLoader());
到了这里,关于Fragment为什么不用构造函数传递参数?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!