Android中Fragment与Activity利用接口回调进行通信

之前我们讲过两种Activity和Fragment通信的方式。一种是通过Bundle将对应的值以<key,value>的形式传递给Fragment。另一种是Activity和Fragment互相调用对方的方法。今天我再介绍一种方法,那就是接口回调。关于这个,我思考了很多。因为感觉接口回调的方法和直接调用Activity的方法没有什么差别 。但是仔细一想,如果多个Activity复用了该Fragment,接口回调就可以有不同的实现方式。比如这个Fragment中有一个按钮,依赖在ActivityA时,点击按钮可以是弹框。而当Fragment依赖在ActivityB时,就可以是跳转页面或请求接口。这种效果是用前两个都不太好实现的。虽然我们也可以在Activity中写同名的方法,但这个情况下我们必须写这个方法,不管我们是否需要这个功能,耦合度大大增加了。而接口的话我们可以不进行实现。说了这么多,现在我把Activity和Fragment通过接口回调方法交互的案例带给大家。

1.在Fragment中定义一个接口内部类

public interface FragmentListener{
    void process(String str);
}

2.在Fragment中要定义该接口对象

private FragmentListener listener;

3.在Fragment的onAttach方法中接收实现类

@Override
public void onAttach(@NonNull Activity activity) {
    super.onAttach(activity);
    if (activity instanceof FragmentListener){
        listener = (FragmentListener) activity;
    }else{
        throw new IllegalArgumentException("activity must implements Fragment interface");
    }
}

4.在Activity中实现接口,并重写process方法,写入相应的逻辑

5.在Fragment中,具体要调用传值的位置调用接口方法

listener.process("我是接口");

此时Activity就可以接收到传入的值 

6.最后在Fragment的onDetach方法中对接口对象清空

listener = null;

这样就完成了接口回调的整个步骤。第3步我们也可以使用更加灵活的做法,比如在Fragment中创建一个方法,为listener赋值,将接口的实现类传入进来。

这就是接口回调进行Activity和Fragment通讯的所有步骤。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值