• 回调、接口的使用


    之前提到过,在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();
        }
    });
  • 相关阅读:
    python3去除字符串中括号及括号里面的内容
    [机器学习]-朴素贝叶斯-最简单的入门实战例子
    [机器学习]-K近邻-最简单的入门实战例子
    [机器学习]-决策树-最简单的入门实战例子
    python3 通过qq邮箱定时发送邮件
    [代码仓库]Python3多线程编程
    [代码仓库]python常用散列函数
    [代码仓库]RSA算法
    [代码仓库]DES加密算法
    [学习记录]tensorflow超简单步骤使用
  • 原文地址:https://www.cnblogs.com/zhaozilongcjiajia/p/10698377.html
Copyright © 2020-2023  润新知