【问题标题】:Problem replacing Fragment within another one. (fragments overlapping)在另一个片段中替换片段时出现问题。 (片段重叠)
【发布时间】:2021-03-20 08:34:53
【问题描述】:

我尝试从RecordRouteFragment 转到SaveRouteFragment。结果是两个片段相互重叠。 我在互联网上搜索并没有找到我的问题的答案,尽管有些人遇到了类似的重叠问题。

fragment_record_route.xml:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    tools:context=".features.routerecording.ui.RecordRouteFragment">

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/cl_frg_container">

        // content

    </FrameLayout>
</LinearLayout>

fragment_save_route.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto">

        // content

</androidx.constraintlayout.widget.ConstraintLayout>

来自 RecordRouteFragment.kt 的 onClickListener

private val btStopRecordOnClick = View.OnClickListener()  {
        stopLocationService()
        viewModel.markRouteAsNotCurrent()

        childFragmentManager.commit {
            replace<SaveRouteFragment>(binding.clFrgContainer.id) //when I replace that with usual R.id.cl_frg_container - nothing changes
            setReorderingAllowed(true)
            addToBackStack("Save a route") // name can be null
        }
    }

我做错了什么?

【问题讨论】:

  • 看来您必须使用 fragmentManager 而不是 childFragmentManager
  • @AndreiTanana 它不起作用。 Docs:片段也能够托管一个或多个子片段。在 Fragment 内部,您可以通过 getChildFragmentManager() 获得对管理 Fragment 子项的 FragmentManager 的引用。如果需要访问它的宿主FragmentManager,可以使用getParentFragmentManager()。 developer.android.com/guide/fragments/fragmentmanager
  • 当然片段可以有嵌套片段。我以为您想将SaveRouteFragment 更改为SaveRouteFragment。对我来说,现在你在 SaveRouteFragment 中添加 SaveRouteFragment

标签: android kotlin android-fragments fragmentmanager


【解决方案1】:

我不得不将 SaveRouteFragment 的背景颜色更改为例如白色。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多