android - 片段 XXX {} 未与片段管理器关联
问题描述
我开始在我的应用程序中使用导航组件,我面临以下问题。我的第一个片段是 LoginFragment。登录成功后,会显示 mainFragment。我希望当用户在 mainFragment 上并按后退按钮不返回 loginFragment 时。为此,我在 nav_graph 中添加了这两行:app:popUpTo="@+id/lovable_app_navigation"
并且app:popUpToInclusive="true"
效果很好。这是我的导航图:
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/app_navigation"
app:startDestination="@id/loginFragment">
<fragment
android:id="@+id/loginFragment"
android:name="com.xxx.LoginFragment"
android:label="LoginFragment"
tools:layout="@layout/login_fragment">
<action
android:id="@+id/dashboard_action"
app:destination="@id/mainFragment"
app:launchSingleTop="true"
app:popUpTo="@+id/app_navigation"
app:popUpToInclusive="true"/>
</fragment>
<fragment
android:id="@+id/mainFragment"
android:name="com.xxx.MainFragment"
android:label="MainFragment"
tools:layout="@layout/main_fragment">
<action
android:id="@+id/logout_action"
app:destination="@id/loginFragment"
app:launchSingleTop="true"
app:popUpTo="@+id/app_navigation"
app:popUpToInclusive="true"/>
</fragment>
<action
android:id="@+id/action_global_loginFragment"
app:destination="@id/loginFragment" />
</navigation>
问题是,一段时间后,当我的会话过期时,用户在应用程序中的哪个片段中都没有关系,我必须在所有堆栈上显示 LoginFragment。我为此创建了一个全局操作action_global_loginFragment
。问题是当我导航到 LoginFragment 时出现此错误:
java.lang.IllegalStateException: Fragment LoginFragment{1d6bd24 (829a6832-3480-4bcb-a3f6-7e2ba214d3ca)} not associated with a fragment manager.
如果我删除它popUpTo
并且popUpToInclusive
它工作正常,但是后退按钮功能会受到影响,它会从 mainFragment 返回到 loginFragment。知道如何解决这个问题吗?提前致谢。
解决方案
同样的问题发生在我身上,我设法通过将navigate
方法包装在view?.post
这样的调用中来解决它:
view?.post {
findNavController().navigate(SplashFragmentDirections.actionSplashFragmentToLoginFragment())
}
推荐阅读
- c# - 在两个线程之间共享 TCPClient
- php - 从数组创建网格的
- hive - Hive:无法将数据从未分区表复制到分区表
- c - 分段故障。将字符串转换为整数
- php - 选择最后插入的行 每 1 秒
- python - 大熊猫上的 SettingWithCopyWarning
- python-3.x - Google Cloud:选择正确的存储选项
- excel - 为多个复选框添加 VBA - 返回编译错误
- python - 张量有 NaN 值 - TensorFlow faster-rccn 训练错误
- algorithm - 使用 Master 方法求解递归关系 -> 当 n 为偶数时 T(n) = 2T(n/2) + n^2 并且当 n 为奇数时 T(n) = 2T(n/2) + n^3