Java Jetpack导航:如何从recyclerview适配器打开新片段?

Java Jetpack导航:如何从recyclerview适配器打开新片段?,java,android,android-fragments,android-jetpack,android-jetpack-navigation,Java,Android,Android Fragments,Android Jetpack,Android Jetpack Navigation,我通常从现有片段或活动中打开一个新片段。但是,有了适配器,可以在多个片段/活动中使用,如何动态打开特定片段 我通常使用以下代码: Navigation.findNavController(view).navigate(R.id.action_startFragment_to_destinationFragment); 在navgraph中创建一个操作后。因为导航发生在片段之间,所以通常情况下,您应该让片段负责这样做 正如您所说,适配器可以在多个片段中使用,因此它应该一次附加到一个特定片段,通常

我通常从现有片段或活动中打开一个新片段。但是,有了适配器,可以在多个片段/活动中使用,如何动态打开特定片段

我通常使用以下代码:

Navigation.findNavController(view).navigate(R.id.action_startFragment_to_destinationFragment);

在navgraph中创建一个操作后。

因为导航发生在片段之间,所以通常情况下,您应该让片段负责这样做

正如您所说,适配器可以在多个片段中使用,因此它应该一次附加到一个特定片段,通常是片段实例化了它

因此,您可以将侦听器接口传递给由片段实现的适配器;当您想要导航到导航图中的另一个片段时,可以在适配器中触发它的回调

此回调方法将在已实现侦听器的片段上执行,您通常可以使用传统的导航代码:

Navigation.findNavController(view).navigate(R.id.action_startFragment_to_destinationFragment);
这样您的适配器就可以被重用,每当一个片段想要重用它时,它都应该实现侦听器

注意:您可能可以将
int
参数传递给侦听器回调,该回调将适配器中的行号传递回片段,以便您决定导航到其他片段

这样,您可以只通过片段保持导航