本文介紹了深度鏈接到另一個(gè)片段[Android]的處理方法,對(duì)大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!
問題描述
活動(dòng)和片段的結(jié)構(gòu)如下:
使用NavigationDrayer。
MainActivity有一個(gè)碎片容器,一個(gè)容器中應(yīng)該有多個(gè)碎片。應(yīng)用啟動(dòng)后,默認(rèn)分片為分片A
使用片段B實(shí)現(xiàn)深度鏈接到MainActivity,以及如何將片段從片段A(默認(rèn))更改為片段B(目標(biāo))。
任何幫助都會(huì)有幫助:)
謝謝
即
類句柄Applink
override fun onInitView() {
handleIntent()
}
private fun handleIntent() {
// ATTENTION: This was auto-generated to handle app links.
val intent = intent
val appLinkAction = intent.action
val appLinkData = intent.data
if (appLinkData != null) {
handleAppLinkIntent(appLinkData)
} else {
handleActivityIntent(intent)
}
}
protected abstract fun handleActivityIntent(intent: Intent)
protected abstract fun handleAppLinkIntent(appLinkData: Uri)
執(zhí)行函數(shù)
@Override
protected void handleActivityIntent(Intent intent) {
Bundle bundle = intent.getExtras();
if (bundle != null) {
switch (this.paramMainMenu) {
case Constants.ZERO:
this.goToProductList();
break;
case Constants.ONE:
this.goToFragmentA();
break;
case Constants.TWO:
this.goToFragmentB();
break;
case Constants.THREE:
this.goToFragmentC();
break;
}
}
}
@Override
protected void handleAppLinkIntent(Uri appLinkData) {
if(appLinkData.getQueryParameterNames().isEmpty()){
String path = appLinkData.getPath();
switch (path) {
case "/kfc/food/price/outofstock":
this.paramMainMenu = Constants.ONE;
break;
case "/food/price/qty":
this.paramMainMenu = Constants.THREE;
break;
case "/price/unbuyable":
this.paramMainMenu = Constants.TWO;
break;
case "/price":
this.paramMainMenu = Constants.ZERO;
break;
case "/food/price":
this.paramMainMenu = Constants.ZERO;
break;
case "/a/food/item":
this.paramMainMenu = Constants.ZERO;
break;
case "/":
this.paramMainMenu = Constants.ZERO;
break;
}
}
}
URL
您的推薦答案應(yīng)包含一些鍵值,以確定要打開的片段
讓我們舉一個(gè)例子:
片段A旨在顯示報(bào)價(jià)列表
片段B旨在顯示產(chǎn)品列表
您的URL包含應(yīng)顯示”產(chǎn)品”的密鑰。
您可以根據(jù)deeplink的鍵值進(jìn)行分片
示例
您的URL是
“https://xyzcompany.com/myapp?open=products”
insinde MainActivity.class onCreate()
String key;
Intent appLinkIntent = getIntent();
String appLinkAction = appLinkIntent.getAction();
Uri appLinkData = appLinkIntent.getData();
if (appLinkData != null) {
key = appLinkData.getQueryParameter("open");
}
if(key == products){
//launch Fragment-B
} else {
//launch Fraagment-A
}
這篇關(guān)于深度鏈接到另一個(gè)片段[Android]的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,