android回调接口

在很久以前,公司让实现一个功能,就是美团中的选券。之后根据选择的券。返回券对应的信息。当时刚入行,java基础薄弱,什么接口回调,匿名类都不知道是什么。只知道安卓里面的startActivityForResult。intent传值。
下面介绍接口回调。
定义一个接口为:

public interface YangtestInter {
    void addMath(int a);
}//自己建

模拟从
MultiFragment (A页面)---->VideoPlayer(B页面)类。这个在脑海中脑补吧。一个是fragment一个是activity。就是简单的intent跳转。

其中VideoPlayer中定义一个静态方法,目的是为了在当前页面下,获取到从上个页面传递过来的‘接口对象’

private YangtestInter _iYang;

public static void setPresent(YangtestInter t) {
        _iYang = t;
    }
//用到了activity的生命周期中的方法
@Override
    protected void onDestroy() {
        super.onDestroy();
        _iYang.addMath(10);//当此页面销毁时,调用此接口
        stopPlay();//结束了必须停止下来,否则会发生错误。造成控件信息被强制清空,但是倒计时缺还在引用的问题
    }

fragment页面为

  @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        initData();//初始化参数。可忽略不看
       //此处就是将此页面中的接口对象传入VidoPlayer的静态方法。用的是匿名类的方式
        VideoPlayer.setPresent(new YangtestInter() {
            @Override
            public void addMath(int a) {
                Toast.makeText(getActivity(), a + "我被回调了!!!", Toast.LENGTH_SHORT).show();
            }
        });
//这个是点击事件
        _btn.setOnClickListener(v -> {
            Intent intent = new Intent(getActivity(), VideoPlayer.class);
            startActivity(intent);
        });
    }

这样就可以完成,在B页面销毁的时候,A页面自动弹出一个Toast。也就是说获取到了从B传递给A的消息。


回调成功展示.png

现在流行的MVP模式,实质也是接口回调。没什么区别的。

你可能感兴趣的:(android回调接口)