赞
踩
Fragment
的构造方法通常不建议直接传递参数。我们先来看一下Fragment源码:
- public Fragment() {
-
- }
在源码中会发现,Fragment的构造函数是空的,所以他和普通类的创建对象的方式不太一样。接着我们看源码:
- 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());
-
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。