了解我们从哪个片段导航的最佳方法



我正在编写一个使用大量片段的应用程序(使用ViewModels(。我正在使用带有导航图的导航组件,

通过使用findNavController().navigate(R.id.myFragment)

在某些情况下,我经常浏览片段,没有任何静态依赖关系.
你可以像F1->F2->F3->F4一样,但你也可以像F1->F2->F4->F3一样。

例如,当我们导航到 F4 时,我需要知道在此之前是哪个片段,是 F3 还是 F2? 我现在设法通过向 F4 发送带有arguments.putBoolean("fromFragment3",true)arguments.getBoolean("fromFragment3")arguments Bundle()来解决,但这看起来很丑陋,您可以快速弄乱整个代码。

问题:

在导航到当前片段之前了解哪个片段是用户的最佳方法是什么?

您可以使用addOnDestinationChangedListener和监听片段事务:

NavController navController= Navigation.findNavController(MainActivity.this,R.id.your_nav_host);
navController.addOnDestinationChangedListener(new NavController.OnDestinationChangedListener() {
@Override
public void onDestinationChanged(@NonNull NavController controller, @NonNull NavDestination destination, @Nullable Bundle arguments) {
Log.e(TAG, "onDestinationChanged: "+destination.getLabel());
}
});

相关内容

  • 没有找到相关文章