我正在使用Android导航组件,并且遇到了一个奇怪的问题。无论我尝试过什么,我都无法清除向上按钮的后堆栈。
我的导航图如下:
让我们以LoginFragment为例,
<fragment
android:id="@+id/loginFragment"
android:name="com.yashovardhan99.firebaselogin.LoginFragment"
android:label="Login"
tools:layout="@layout/fragment_login" >
<action
android:id="@+id/action_loginFragment_to_welcomeFragment"
app:destination="@id/welcomeFragment"
app:popUpTo="@+id/nav_graph"
app:popUpToInclusive="true" />
</fragment>
要浏览的Java代码为:
navController.navigate(
LoginFragmentDirections.actionLoginFragmentToWelcomeFragment());
我已将PopUpTo设置为图形ID,并将Inclusive设置为true。移至WelcomeFragment时,这应该清除后堆栈。但是,WelcomeFragment在操作栏上仍显示“向上”按钮,按下它会将我带回到PreLoginFragment(这是图形的原始目标)。奇怪的是,按后退按钮可以按预期将我带出应用程序。
答案 0 :(得分:0)
我使用 AppBarConfiguration
val appBarConfiguration = AppBarConfiguration
.Builder(
R.id.preLoginFragment,
R.id.welcomeFragment
)
.build()
然后,您需要调用 setupActionBarWithNavController(this, navController)
而不是 setupActionBarWithNavController(this, navController, appBarConfiguration)
这里我声明了两个顶级片段,其中后退箭头不会显示在应用栏中。