我在安卓系统中使用新的100,在移动到一个新片段后,我一直在清理导航堆栈.

例子:

我正在使用一个简单的NavHostFragment.findNavController(Fragment).navigate(R.id.homeFragment)来导航.

当前代码:

mAuth.signInWithCredential(credential)
            .addOnCompleteListener(getActivity(), new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful()) {
                        NavHostFragment.findNavController(LoginFragment.this).navigate(R.id.homeFragment);
                    } else {
                        Log.w(TAG, "signInWithCredential:failure", task.getException());
                    }
                }
            });

我试着在navigate()中使用NavOptions,但"后退"按钮仍将我送回登录片段

NavOptions.Builder navBuilder = new NavOptions.Builder();
NavOptions navOptions = navBuilder.setPopUpTo(R.id.homeFragment, false).build();   
             NavHostFragment.findNavController(LoginFragment.this).navigate(R.id.homeFragment, null, navOptions);

推荐答案

首先,将属性app:popUpTo='your_nav_graph_id'app:popUpToInclusive="true"添加到操作标记.

<fragment
    android:id="@+id/signInFragment"
    android:name="com.glee.incog2.android.fragment.SignInFragment"
    android:label="fragment_sign_in"
    tools:layout="@layout/fragment_sign_in" >
    <action
        android:id="@+id/action_signInFragment_to_usersFragment"
        app:destination="@id/usersFragment"
        app:launchSingleTop="true"
        app:popUpTo="@+id/main_nav_graph"
        app:popUpToInclusive="true" />
</fragment>

其次,使用上述操作作为参数,导航到目的地.

findNavController(fragment).navigate(
     SignInFragmentDirections.actionSignInFragmentToUserNameFragment())

更多信息请参见docs.

NOTE:如果你使用方法navigate(@IdRes int resId)导航,你将不会得到想要的结果.因此,我使用了方法navigate(@NonNull NavDirections directions).

Android相关问答推荐

房间数据库迁移未正确处理:原因:java.lang. IllegalState异常:

无法理解Kotlin Coroutines and Flows中的J.C.编程行为

滑动以更改合成中的活动

Android Jetpack Compose Material3主题配色方案

Android 14上的慢速意图广播交付

保护所有程序包文件和类

我正在创建一个简单的连接四个游戏,我需要一个弹出式窗口当你赢了

我想使用代码自动重命名我的Android存储中的文件夹

ERR_SSL_VERSION_OR_CIPHER_MISMATCH - Android Webview

在Jetpack Compose中实现焦点突出的最佳方式?

如何迭代 SqlDelight Select 结果而不将所有内容加载到内存中?

在 compose 中做可变状态堆栈

具有数据库和升级潜力的移动应用程序开发(Android)供朋友使用

Jetpack 将 Grid 与基于大小的自适应列数组合在一起

ImageBitmap 使用 Glide/Coil 到画布

Jetpack Compose TextField 在输入新字符时不更新

如何在 TextButton 中分隔文本和图标

如何使用底页,启用和展开父交互

是什么让 Android Studio 中的按钮变成紫色?加上新手的其他奇怪行为

如何删除 Ktor 客户端 2.0.0 的默认标头