美文网首页
android回调接口

android回调接口

作者: 小蘑菇的驼羊 | 来源:发表于2018-07-27 17:33 被阅读22次

    在很久以前,公司让实现一个功能,就是美团中的选券。之后根据选择的券。返回券对应的信息。当时刚入行,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回调接口

          本文链接:https://www.haomeiwen.com/subject/plpgmftx.html