创建fragment的适配器的时候,构造函数传入content参数
来源:互联网 发布:java security 编辑:程序博客网 时间:2024/06/03 23:06
菜鸟一枚,遇到问题就当笔记来记,大神看见还望告知原理。
经常越到这个麻烦,比如我的fragment是一个listview,要放到viewpager的一个页面当中,adapter的构造函数是这样:
public MyGridAdapter(Context context, String[] text, int[] images) { super(); this.mContext = context; this.img_text = text; this.imgs = images; }
如果该这个构造函数为这样:
public MyGridAdapter(Fragment fragment, String[] text, int[] images) { super(); this.mContext = context; this.img_text = text; this.imgs = images; } //text和images是要放到Listview里面的数据
则在adapter里面加载fragment(listview)的item布局里面就会遇到问题,不能使用下面的方法来加载自布局。
LayoutInflater.from(Context).inflate( R.layout.listview_item, parent, false);
我原来会傻乎乎的把fragment当context传进去,发现类型不对,现在使用的是下面这种方法(getActivity().getApplicationContext())取得fragment的context。不知道还有没有别的方法。
adapter = new Adapter(getActivity().getApplicationContext(), img_text, imgs);
注:Fragment中有一个getActivity()的方法。这个方法会返回当前Fragment所附加的Activity。当fragment生命周期结束并销毁时,getActivity()返回的会是null。
总结:对context不了解,字面上看只知道他是上下文的意思,查了一下关于它的介绍:
(1)在android中context可以作很多操作,但是最主要的功能是加载和访问资源。在android中有两种context:一种是 application context,一种是activity context。通常我们在各种类和方法间传递的是activity context。下面是查到的这两个的区别:
这是两种不同的context,也是最常见的两种。application context的生命周期与Application的生命周期相关的,context随着Application的销毁而销毁,伴随application的一生,与activity的生命周期无关。第二种activity context跟Activity的生命周期是相关的,但是对一个Application来说,Activity可以销毁几次,那么属于Activity的context就会销毁多次。至于用哪种context,得看应用场景,感觉用Activity的context好一点,不过也有的时候必须使用Application的context。application context可以通过
Context.getApplicationContext或者Activity.getApplication方法获取.
还有就是,在使用context的时候,小心内存泄露,防止内存泄露,注意一下几个方面:
1. 不要让生命周期长的对象引用activity context,即保证引用activity的对象要与activity本身生命周期是一样的
2. 对于生命周期长的对象,可以使用application context
3. 避免非静态的内部类,尽量使用静态类,避免生命周期问题,注意内部类对外部对象引用导致的生命周期变化
(2)初学,对 LayoutInflater会用但不知道原理,可以看一下郭霖的文章:
LayoutInflater原理分析
(3)对于context更全面的分析博客context详解
- 创建fragment的适配器的时候,构造函数传入content参数
- spring有办法在getBean的时候传入构造函数的参数吗?
- 创建dialog时传入content的错误
- ViewPager和Fragment使用时候的适配器
- 匿名函数的参数传入
- Fragment的构造函数
- Fragment的构造函数
- 我们在创建对象的时候,为什么要调用构造方法并且要给构造方法传入实参???
- Fragment使用带参数的构造函数遇到的问题
- c++函数在传入对象参数和返回对象时候的内存调用情况
- 谈谈Fragment的构造函数、重新创建(recreate)及相关
- quick 如何创建对象的传入参数
- 声明时候构造函数前加explicit -防止构造函数参数的隐式转换
- Android Fragment的构造函数
- gdb 传入main函数参数的方法
- 函数的传入和传出参数
- 指针作为参数传入函数的陷阱
- js函数中传入的event参数
- oc代码规范
- 网银在线的异步操作代码示意图
- $.ajaxFileUpload插件上传图片成功弹出undefined
- Spring DI 集合属性依赖注入
- GK110 Tesla K20最终规格:阉掉384个流处理器
- 创建fragment的适配器的时候,构造函数传入content参数
- RHEL十三(访问Linux文件系统)
- qt实现sqlite3的级联删除
- python操作redis
- git忽略已经被提交的文件
- c++中new和delete的使用方法
- HDU 1013 Digital Roots
- edittext inputType 属性值
- iCarousel 旋转木马修改要展示的个数 隐藏多余的