今天遇到一个很奇怪的空指针问题,看了好久问了大牛才知道,为了避免大家遇到同样地问题故在这里指出我遇到的问题,首先我有一个自定义控件gridview,在里面要调用fragment中的一个方法。
在activity中将fragment引入,fragment中通过new gridview得到一个自定义控件的实例传入getactivity()将activity的对象传入,然后setadapter显示,显示正常。
然后关键来了,点击item,在自定义控件中调用写在fragment中的方法,弹出一个dialog,通过用new 一个fragment实例来调用其中的方法,发现dialog中的getactivity()都是空的就是没有得到activity的对象,就连之前正常显示的gridview这个全局变量在这里面也显示为空。
最后的最后。。。。大神指出你要通过findviewbyfragmentbytag()得到之前你定义过的fragment不能new 一个fragment,因为new一个就得不到之前的父控件就是包容这fragment的activity,这样你获得的gridview对象就是无效的,getactivity()也是得不到的。所以你要在activity加入fragment的时候要设置其tag方便找到。。
顿时豁然开朗,心情大好。写此博客,希望大家以后能及早解决这种问题。。。