Android在fragment中调用getacvitity()返回null的解决方法

众所周知,Android中的fragment和activity直接具有密不可分的关系,因为fragment是依赖activity存在的。那么在使用fragment的过程中,经常需要用到getactivity()来获取包含fragment的"容器”——activity,来处理一些必要的操作。

最常见的调用是,在fragment中使用Toast来显示信息的时候,Toast.make(context, text, duration);其中第一个参数context就需要用getActivity(),或者getApplicationContext()方法。

但是,并不是每一次调用这个方法都会成功,它依然会在一些情况下返回一个null值,导致程序崩溃。

比如今天我在测试程序时,遇到了程序崩溃的情况,打印信息是

根据Log信息,找到代码中出错的位置:

 
 

这是在我的fragment中错误提示的信息,正是getactivity()方法,返回的是null


解决方法:

在fragment中自定义变量 mActivity,然后重写onAttach()方法:

public void onAttach(Activity activity){

super.onAttach(activity);

mActivity = activity;

}

然后在要使用的地方,直接用mActivity代替

最后一定还要重写onDetach()方法,将mActivity设为null

public void onDetach(){

super.onDetach();

mActivity = null;

}


特此记录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值