活动和片段的结构类似于:
使用NavigationDrawer。
MainActivity有一个用于Fragment的容器,在一个容器中应该有很多碎片。启动应用程序后,片段的默认值为片段A。
使用片段B实现对MainActivity的深度链接,如何将片段从片段A(默认)更改为片段B(目标)。
任何帮助都会有所帮助:) 谢谢
即 类句柄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)
impl函数
@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;
}
}
}
答案 0 :(得分:1)
您的URL应该包含一些键值来确定要打开的片段 让我们举个例子: Fragment-A旨在显示要约清单 Fragment-B是用来显示产品列表的设计
您的URL包含一个应显示“产品”的键。
您可以根据Deeplink的键值分隔片段
示例
您的网址是
“ 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
}
答案 1 :(得分:0)
Android在Android Jetpack库中添加了导航组件,以处理应用程序中的复杂导航方案。
您可以创建目标(片段等)并通过操作将它们链接起来,以从一个目标导航到另一个目标。您可以使用导航组件将深层链接与片段相关联。这应该可以解决您的问题。
检查以下链接以获取更多详细信息:
https://developer.android.com/guide/navigation
https://developer.android.com/guide/navigation/navigation-deep-link