超簡單幾行代碼內建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.項目還有很多不完善的地方,歡迎大家指導。