- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试膨胀包含 FragmentContainerView
的 View 在被放入布局的 fragment 中。
像这样:
val transaction = fragmentManager.beginTransaction()
transaction.replace(R.id.main_content, Frag(), "tag");
transaction.commitNowAllowingStateLoss()
哪里Frag
创建一个像这样扩展 xml 的 View :
<?xml version="1.0" encoding="utf-8"?>
<merge 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:layout_width="match_parent"
android:layout_height="match_parent"
tools:parentTag="android.widget.FrameLayout">
<androidx.fragment.app.FragmentContainerView
android:id="@+id/nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:navGraph="@navigation/nav_graph" />
</merge>
但是当我执行代码时,我的应用程序崩溃了:
Caused by: java.lang.IllegalStateException: FragmentManager is already executing transactions
如何在使用 FragmentContainerView
时避免此错误? (观察:如果我使用 <fragment>
而不是 <androidx.fragment.app.FragmentContainerView>
,一切正常)
最佳答案
你应该永远,永远使用childFragmentManager
嵌套 fragment 时 - childFragmentManager
当其父项正在经历生命周期更改时(我假设是在您调用事务时),从不执行事务。
当您使用 <fragment>
时,这实际上会悄悄地给您带来问题。标记为那些生命周期事件实际上并不作为交易发生,而是直接作为通货膨胀的一部分。使用错误FragmentManager
意味着 fragment 及其 View 将无法正确保存和恢复它们的状态。
它失败的原因 FragmentContainerView
是那个FragmentContainerView
实际上也是一样FragmentTransaction
就像你平时做的那样。
关于android - 是否可以在 `FragmentContainerView` 中膨胀包含 `Fragment` 的 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63141245/
更新到导航后2.2.0-beta01从以前的版本开始,lint 给出了关于替换 的警告。带有 FragmentContainerView 的标签. 但是,单独替换标签似乎可以防止导航图被夸大。 根据
我正在使用带有底部导航的 Android 导航组件,lint 会发出有关替换 的警告带有 的标签但是当我更换时,findNavController不工作它给了我关于它没有设置 NavControl
我正在使用带有底部导航的 Android 导航组件,lint 会发出有关替换 的警告带有 的标签但是当我更换时,findNavController不工作它给了我关于它没有设置 NavControl
好像使用 FragmentContainerView不能开箱即用? 这是我使用 fragment-ktx:1.2.0-rc01 的代码我总是遇到这个错误: Caused by: java.lang.
在我有的 XML 我想从 View 中获取 fragment 。 documentation建议使用 FragmentContainerView fcv = findViewById(R.id.id
预计 使用类似于示例应用的导航 UI 的 BottomNavigationView 和 FragmentContainerView 创建底部应用栏导航 NavigationAdavancedSampl
为了在 Android Studio 中预览布局时能够看到 fragment 内某个 View 的内容,可以执行 this : 但是,如果您从 fragment 切换至androidx.
我正在尝试膨胀包含 FragmentContainerView 的 View 在被放入布局的 fragment 中。 Root View fragment 自定义 View fragment 容器 V
我将导航组件更新为 2.3.2 版本。 在2.3.1版本正常工作 我正在浏览文档,但没有发现任何关于错误或组件中的任何更新的信息 E/AndroidRuntime: FATAL EXCEPTION:
由于底部的工作表 fragment 没有显示出来,我最初认为问题出在我的 Java 代码中——可能是适配器中的设置不正确、使用了错误的 fragment 管理器等——而不是 XML 布局。经过几天的挫
由于在两个 fragment 之间的工具栏中实现后退按钮存在困难,我决定开始熟悉 Navigation Graph。但我得到一个错误Views added to a FragmentContainer
我正在尝试从使用 FrameLayout 过渡到使用 FragmentContainerView,从我看过的教程来看,这应该非常简单。但是,当我在进行更改后运行我的应用程序时,我得到 Error in
我正在努力让 Google Place API 显示在 CardView 中。 我正在查看的特定代码来自 GitHub,似乎对其他人都有效,但我不明白为什么它会抛出错误。 这是我收到的错误: E/An
在升级到最新的 fragment (1.2.2 版本)和导航(2.2.1 版本)后,为了防止出现 Lint 警告(将 fragment 替换为 FragmentContainerView),我将 fr
当导航组件切换到 fragment 时,我得到这个“添加到 FragmentContainerView 的 View 必须与 fragment 相关联”崩溃。这是什么原因造成的? 最佳答案 我在任何地
这是由以下原因引起的: "引起:android.view.InflateException:com.example.dnaire:layout/main 中的二进制 XML 文件第 21 行:com.
使用 androidx.fragment.app.FragmentContainerView 时作为 navHost 而不是常规的 fragment方向更改后,应用程序无法导航到目的地。 我收到以下错
我的导航 Controller 中有此错误,我已经更改了 XML 中的声明,但没有帮助,我更改了 Fragment 为 FragmenContainer,但没有帮助。谁能帮我解决这个错误? 日志: E
当我将“上下文上下文”属性添加到适配器构造函数后,尝试将“getContext()”参数传递给我在 Fragment 中创建的适配器实例时,会发生此错误。 完全不知道该怎么做,我在 SO 中找到的一些
I published my application to the Play Store as open beta. I don't get any error when I run it wi
我是一名优秀的程序员,十分优秀!