zoukankan      html  css  js  c++  java
  • 回调、接口的使用

    之前提到过,在Recycleview中若想要调用所属Activity中的方法,可以在Recycleview的Adapter构造时传入Activity对象并暂存下来,就可以对该对象进行操作,调用Activity中的方法;

    例如下面,FragmentStatePagerAdapter的构造函数中,对MainActivity对象进行赋值。

        private List<Fragment> fragmentlist;private MainActivity context;
    
        public MainFragmentStatePagerAdapter(MainActivity context, FragmentManager fm, List<Fragment> fragmentlist)
        {
            super(fm);
            this.context = context;
            this.fragmentlist = fragmentlist;
        }

    但是这种方法不太规范,可考虑使用接口进行回调的方法;

    例如,在一个Fragment中有个按钮,点击该按钮需要调用Activity中的函数;

    首先,在Fragment中定义一个接口,在此不需要实现:

        public interface OnButtonClickListener{
            //当“哼歌作曲”被点击时
            void click_button_sing();
        }

    然后在Fragment中声明一个该接口,并实现其赋值函数:

    private OnButtonClickListener mOnButtonClickListener;
    public void setOnButtonClickListener(OnButtonClickListener mOnButtonClickListener){
        this.mOnButtonClickListener = mOnButtonClickListener;
    }

    接着对Button对象编写其点击监听器,被点击时调用mOnButtonClickListener对象中的函数:

    button_aicompose_sing.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
    mOnButtonClickListener.click_button_sing();
    }
    });

    Fragment部分的代码就完成了,接下来在Activity中进行编写,创建一个该Fragment对象,并编写其监听器,监听器中就可以调用本Activity中的函数了:

    AIComposeFragment aiComposeFragment = new AIComposeFragment();
    aiComposeFragment.setOnButtonClickListener(new AIComposeFragment.OnButtonClickListener() {
        @Override
        public void click_button_sing() {
            GotoRecorderActivity();
        }
    });
  • 相关阅读:
    Node基础篇(模块和NPM)
    Node基础篇(概要)
    配置Chrome支持本地(file协议)的AJAX请求
    关于 WP 开发中.xaml 与.xaml.cs 的关系
    Windows Phone 8.1又有什么新花样
    简单聊聊今天微软的变化
    Entity Framework入门系列(1)-扯淡开篇
    一个简单的文件服务器实现方案
    网站优化之页面级缓存方案
    Windows下Memcached安装与配置实例
  • 原文地址:https://www.cnblogs.com/zhaozilongcjiajia/p/10698377.html
Copyright © 2011-2022 走看看