【发布时间】:2019-04-15 20:35:53
【问题描述】:
activity和fragment的结构是这样的:
使用 NavigationDrawer。
MainActivity 有一个Fragment 容器,在一个容器中应该有多个Fragment。应用启动后,fragment默认为fragment A。
使用 Fragment B 实现对 MainActivity 的深度链接,如何将 Fragment A(默认)的 Fragment 更改为 Fragment 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)
实现函数
@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;
}
}
}
【问题讨论】:
-
使用
NavigationDrawer、BottomNavigation或ViewPager。 -
使用 NavigationDrawer @ZwalPyaeKyaw
-
您可以使用
FragmentManager()在Fragments之间切换。 -
getSupportFragmentManager().beginTransaction(). replace(R.id.flContainer, new DemoFragment(), "SOMETAG"). commit(); // Now later we can lookup the fragment by tag DemoFragment fragmentDemo = (DemoFragment) getSupportFragmentManager().findFragmentByTag("SOMETAG");像这样。这是教程的link。 -
我用过,功能和NavigationDrawer菜单上的clickListener一样。现在的问题是当我在Applink上将switch fragment的功能调用为handleIntent时,没有效果。我总是转到片段 A。
标签: java android android-fragments deep-linking applinks