处理Fragment中退出Activity空指针异常

来源:互联网 发布:网络教育和函授毕业证 编辑:程序博客网 时间:2024/05/21 10:51
中项目中可能会有存在这样的情况:一个Activity中嵌套了Fragment,然后后面退出的时候就出现一款空指针异常,因为我们调用的时候采用的方式是:getContext.finish();空指针是因为宿主Activity已经被回收了所以就为空了:
解决办法:采用接口回调的方式将需要退出的动作回调给宿主Activity:
1 在fragment中定义接口:
2 在fragment中获取到activity的监听
3 在需要回调的地方将动作回调给Activity
4 在Activity中实现接口
5 在复写方法中执行退出操作

1 Fragment中定义接口
private OnSelectedAddressCallback onSelectedAddressCallback;
 
public interface OnSelectedAddressCallback {
void onSelected(@NonNull AddressBean address);
}

在fragment中获取到activity的监听(也可以采用setXX()的方式将获取到监听对象)
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
if (activity instanceof OnSelectedAddressCallback)
onSelectedAddressCallback = (OnSelectedAddressCallback) activity;
else
throw new NullPointerException("必须在Activity中实现OnSelectedAddressCallback接口");
}
3 在Fragment中调用接口方法
onSelectedAddressCallback.onSelected(addressBean);
4 Activity实现接口AddressFragment.OnSelectedAddressCallback 
5 复写接口方法完成回调事件处理
@Override
public void onSelected(@NonNull AddressBean address) {
// 点击item后将当前item中的地址对象返回给调用者
finish();
}



0 0