天天看点

超简单几行代码集成Fragment通信框架,封装四个接口覆盖所有的方法带参和返回值情况,实现万能接口通用,在Activity中复写自己方法的逻辑代码即可

超简单几行代码集成Fragment通信框架,封装四个接口覆盖所有的方法带参和返回值情况,实现万能接口通用,在Activity中复写自己方法的逻辑代码即可

通过继承框架的 BaseFragment和BaseActivity,简单的几行代码,即可实现Fragment和Activity之间的通信,让程序更简洁、更高效。

FunctionInterface

一个面向Fragment和Activity的万能j通信框架,四个接口覆盖所有参数和返回值的情况。

两行代码即可实现数据通信传输,只用写自己要实现的逻辑代码即可。

​​官网地址​​​​其它信息​​​​源码地址​​

最新版本

版本号:

​​​

​​

使用自行替换下面的版本号,以获得最新版本。

使用方法

这里分别介绍在不同项目环境中,如何引用对该库的依赖。

Android中使用:

方法一:

1.第一步,在项目的build.gradle下配置,注意是项目的build.gradle:

allprojects {
  repositories {
    ...
    maven { url 'https://www.jitpack.io' }
  }
}      

2.第二步,在app的build.gradle下添加如下依赖:

dependencies {
        ...
        implementation 'com.github.YouAreOnlyOne:FunctionInterface:版本号'
        ...
 }      

方法二:

1.第一步,下载依赖的包:​​https://github.com/YouAreOnlyOne/FunctionInterface/blob/master/source/functioninterface-release.aar​​ 。并放到项目的 libs 目录下面。

2.第二步,在app的build.gradle下添加如下依赖,注意,两个依赖是平级关系:

repositories {
   flatDir {
       dirs 'libs'
     }
}

dependencies {
        ...
        compile(name:'andfix-release', ext:'aar')
        ...
}      

使用示例:

1、在Android项目中,在MainActivity中加载了若干Fragment,此时需要实现通信,只需要简单的进行下面的步骤即可完成:

2、所有的Fragment继承框架的BaseFragment,并在每个Fragment中定义接口名称,注意接口名称保证唯一,一般建议如下定义:

public static final String INTERFACE_FUNCTION_NAME = BlankFragment.class.getName()+“一个字符名称”;

3、在Fragment中使用方法,也只需要一行代码进行调用,如下:

functionsManager.invokeFunction(INTERFACE_FUNCTION_NAME);

4、在MainActivity中继承框架的BaseActivity,此时需要继承对应的抽象方法,并在方法中使用如下两行代码:

@Override
public void setFunctionsForFragment(int id) {
    //下面两行代码是需要实现的
    BaseFragment baseFragment=(BaseFragment)fragmentManager.findFragmentById(id);
    //addFunction()中new 后面的接口,根据自己的实际需要进行选择,如不需要参数不需要返回值,则像下面所示,其它的四个接口可以灵活选择
    baseFragment.setFunctionsManager(functionsManager.addFunction(new FunctionNoParameterNoResult("Fragment中对应的接口名称,步骤2所示")));      

此时,只需要书写自己方法的逻辑代码即可,如下所示:

@Override
public void setFunctionsForFragment(int id) {
    BaseFragment baseFragment=(BaseFragment)fragmentManager.findFragmentById(id);
    baseFragment.setFunctionsManager(functionsManager.addFunction(new FunctionNoParameterNoResult(INTERFACE_FUNCTION_NAME) {
        @Override
        public void function() {
            //要实现的方法的逻辑代码
            Toast.makeText(MainActivity.this,"test method",Toast.LENGTH_LONG).show();
        }
    }));      

如有对网络请求、上传、下载等相关网络操作不熟悉的,可以参考一下下面的文章:

OkHttp 、Retrofit 、Volley 、RxJava、Novate在Android中Web网络请求一行代码解决。

项目用到的权限

在manifest文件中添加访问的权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>      

使用指南

更新中……

相关介绍

一行代码解决AndFix热修复和热跟更新问题,集成了阿里的开源库,修复程序的缺陷bug漏洞和功能页面等.

其它信息

1.项目还有很多不完善的地方,欢迎大家指导。