当前位置:   article > 正文

Fragment为什么不用构造函数传递参数?

Fragment为什么不用构造函数传递参数?

Fragment的构造方法通常不建议直接传递参数。我们先来看一下Fragment源码:

  1. public Fragment() {
  2. }

在源码中会发现,Fragment的构造函数是空的,所以他和普通类的创建对象的方式不太一样。接着我们看源码:

  1. public static Fragment instantiate(Context context, String fname) {
  2.     return instantiate(context, fname, null);
  3. }
  4. public static Fragment instantiate(Context context, String fname, Bundle args) {
  5.     try {
  6.         Class<?> clazz = sClassMap .get(fname);
  7.         if (clazz == null) { 
  8.             // Class not found in the cache, see if it's real, and try to add it 
  9.             clazz = context.getClassLoader().loadClass(fname);
  10.             sClassMap .put(fname, clazz);
  11.          }
  12.         /*获取Bundle原先的值,这样一开始利用Bundle传递进来的值,就放入f. mArguments. 只需要在Fragment中利用getArguments().getString("key");就能将参数取出来继续用 */
  13.         Fragment f = (Fragment)clazz.newInstance(); 
  14.         if (args != null) {
  15.             args.setClassLoader(f.getClass().getClassLoader());
  16.      
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/99041
推荐阅读
相关标签
  

闽ICP备14008679号