导航组件:如何列出后堆栈上的碎片?

时间:2020-04-07 21:40:20

标签: android android-architecture-navigation

出于调试目的,我需要知道哪些Fragment(我需要像MyCoolFragment这样的类名)位于堆栈上,以及它们在堆栈上的排列顺序。使用Navigation component时该怎么做?

我希望有这样的东西:

findNavController().backStack.forEach {
    // print it.toString()
}

但是当我尝试使用它时,Android Studio会告诉我

enter image description here

那么,我如何看待后排堆里的东西呢?如果有问题,我目前正在与2.3.0-alpha04合作。

2 个答案:

答案 0 :(得分:1)

在运行时不可用。仅当将TestNavHostController类用作navigation-testing工件的一部分时,才有可能将其作为测试的一部分来验证回栈。

答案 1 :(得分:1)

出于调试目的,您可以忽略 lint 错误并在返回堆栈中列出非 NavGraph 目标。

val breadcrumb = navController
    .backStack
    .map {
        it.destination
    }
    .filterNot {
        it is NavGraph
    }
    .joinToString(" > ") {
        it.displayName.split('/')[1]
    }

// e.g. first_fragment > second_fragment > third_fragment