Android 复制现有片段

Android 复制现有片段,android,android-fragments,Android,Android Fragments,由于Android上不推荐使用Turbolinks,我试图自己实现它的一小部分功能 我试图做的是在我的应用程序中使用NavController和片段。该片段几乎只包含一个webview 现在,当有人点击该webview中的某个内容时,我不想在该webview中加载一个新页面,而是想通过编程创建一个新的片段(实例),并让NavController导航到新的“页面”。这样做的好处是可以获得一个转换,而且我可以使用系统返回按钮导航到以前的页面 在这一点上,我甚至不确定这是否可行 navigate()方

由于Android上不推荐使用Turbolinks,我试图自己实现它的一小部分功能

我试图做的是在我的应用程序中使用NavController和片段。该片段几乎只包含一个webview

现在,当有人点击该webview中的某个内容时,我不想在该webview中加载一个新页面,而是想通过编程创建一个新的片段(实例),并让NavController导航到新的“页面”。这样做的好处是可以获得一个转换,而且我可以使用系统返回按钮导航到以前的页面

在这一点上,我甚至不确定这是否可行

navigate()
方法采用片段ID。如果我传递与当前最顶端片段相同的ID,则不会发生任何事情。因此,我的想法是以某种方式创建当前片段的副本,并传递类似于
导航(ID\ux)
的内容

请注意,我是Android新手,可能缺少一些基本的东西

编辑:作为注释中的请求,这里是一个示例

NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
Bundle args = new Bundle();
args.putInt("number", 5);

navController.navigate(R.id.open_category, args);
“open_category”是一个
,它应该显示同一片段的一个新实例。这实际上发生了(至少调用了
onCreateView()
),但NavController不会将新片段放在堆栈的顶部,而且我无法返回到“旧”片段实例

<action
    android:id="@+id/open_category"
    app:destination="@id/navigation_blank"
    />


我认为您必须使用片段管理器以“老式”的方式实现自己的导航。你仍然可以实现你想要的,我毫不怀疑,但你不需要使用导航控制器。这应该是有用的(希望如此):NavController当然允许堆栈顶部具有相同类型片段的多个实例。显示您的代码。@ianhanniballake请查看上面的代码。我可以把一个参数传递给NavController,让我在这两个实例之间导航吗?@ianhanniballake我已经弄明白了。我遗漏的部分是,我还使用了BottomNavigationView,这使得某些部分有点棘手。我不知道这有什么关系。我可能会创建一个git回购,以防其他人也在为同样的事情而挣扎。无论如何,谢谢你的提示。这正是我所需要的自信。我认为你必须用片段管理器以“老式”的方式实现你自己的导航。你仍然可以实现你想要的,我毫不怀疑,但你不需要使用导航控制器。这应该是有用的(希望如此):NavController当然允许堆栈顶部具有相同类型片段的多个实例。显示您的代码。@ianhanniballake请查看上面的代码。我可以把一个参数传递给NavController,让我在这两个实例之间导航吗?@ianhanniballake我已经弄明白了。我遗漏的部分是,我还使用了BottomNavigationView,这使得某些部分有点棘手。我不知道这有什么关系。我可能会创建一个git回购,以防其他人也在为同样的事情而挣扎。无论如何,谢谢你的提示。能够做到这一点的信心正是我所需要的。