知道我们从哪个片段导航的最佳方法

时间:2020-02-06 14:11:05

标签: android android-fragments navigation fragment

我正在编写一个使用很多Fragment(带有ViewModels)的应用程序。我正在使用带有导航图的导航组件通过使用

从一个片段导航到另一个片段

findNavController().navigate(R.id.myFragment)

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

一样去

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

问题:

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

1 个答案:

答案 0 :(得分:0)

您可以使用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());
            }
        });