gpt4 book ai didi

java - 如何在 fragment 而不是 Activity 中使用 NavController(在 fragment 中带有 NavHost)?

转载 作者:行者123 更新时间:2023-12-02 04:20:39 25 4
gpt4 key购买 nike

我有一个 MainActivity,其中有一个带有 mainFragment 的 navController,该 mainFragment 充当 4 个 fragment (提要、通知、配置文件和帮助)的 NavHost。我的问题是这些 fragment 中的第三个,我需要它也有自己的 navController 和 3 个选项( Activity 、成就和编辑个人资料)。我尝试以与在MainActivity中创建相同的方式创建,在Profile fragment 中使用NavHost的 fragment ,但是android不接受这种方式,并且我在Google上搜索找不到任何示例。有谁知道怎么解决吗?

https://developer.android.com/reference/kotlin/androidx/navigation/NavController

它遵循我在 MainActivity 中实现的方式,这个“bottomNavigationView”是在 fragment 之间传输的菜单:

        navController = Navigation.findNavController(this, R.id.main_fragment);

navController.addOnDestinationChangedListener((controller, destination, arguments) -> {
navDestination = destination;

switch (destination.getId()) {

case R.id.feed:
bottomNavigationView.setCurrentActiveItem(0);
break;
case R.id.alerts:
bottomNavigationView.setCurrentActiveItem(1);
break;
case R.id.profile:
bottomNavigationView.setCurrentActiveItem(2);
break;
case R.id.help:
bottomNavigationView.setCurrentActiveItem(3);
break;

}

});
bottomNavigationView.setNavigationChangeListener((view, position) -> {

switch (position) {
case 0:
if (navDestination.getId() != R.id.feed) {
titleHeaderMain.setText(R.string.publicacao);
titleHeaderMain.setGravity(View.TEXT_ALIGNMENT_CENTER);
navController.navigate(R.id.feed);
}
break;
case 1:
if (navDestination.getId() != R.id.alerts) {
titleHeaderMain.setText(R.string.notificacoes);
navController.navigate(R.id.alerts);
}
break;
case 2:
if (navDestination.getId() != R.id.profile) {
titleHeaderMain.setText(R.string.perfil);
navController.navigate(R.id.profile);
}
break;
case 3:
if (navDestination.getId() != R.id.help) {
titleHeaderMain.setText(R.string.ajudar);
navController.navigate(R.id.help);
}
break;
}

});

最佳答案

您必须重新考虑您的导航路径。我遇到了同样的问题,但没有成功。我不得不重新处理它。

我仅将底部导航放在 Activity 中,并根据目的地隐藏或显示它。

关于java - 如何在 fragment 而不是 Activity 中使用 NavController(在 fragment 中带有 NavHost)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56637482/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com