为啥 Fragment SupportMapFragment 还没有附加

Posted

技术标签:

【中文标题】为啥 Fragment SupportMapFragment 还没有附加【英文标题】:Why Fragment SupportMapFragment has not been attached yet为什么 Fragment SupportMapFragment 还没有附加 【发布时间】:2021-11-30 06:25:21 【问题描述】:

我正在尝试在我的片段上实现 supportmapfragment,但由于某种原因它给了我错误。我做错了什么?

我得到的错误:java.lang.IllegalStateException: Fragment SupportMapFragment67446a6 (09078183-572b-41c6-8795-7441157371d5) 尚未附加。

supportMapFragment.getMapAsync(this)。在此之前从未被称为崩溃

class MapFragment : Fragment(), OnMapReadyCallback 

private lateinit var googleMap: GoogleMap

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
                          savedInstanceState: Bundle?): View 
    val view = inflater.inflate(R.layout.fragment_map, container, false)

    val supportMapFragment = SupportMapFragment()
    supportMapFragment.childFragmentManager.findFragmentById(R.id.google_map)
    supportMapFragment.getMapAsync(this)

    return view
   

fragment_map .xml 文件看起来像:

    <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_
    android:layout_
    android:background="@color/primaryBackground"
    xmlns:app="http://schemas.android.com/apk/res-auto">


       <androidx.fragment.app.FragmentContainerView
        android:name="com.google.android.gms.maps.SupportMapFragment"
        android:id="@+id/google_map"
        android:layout_
        android:layout_/>

</androidx.constraintlayout.widget.ConstraintLayout>

【问题讨论】:

【参考方案1】:

添加:

private lateinit var mapFragment: SupportMapFragment

删除

val supportMapFragment = SupportMapFragment()

变化

supportMapFragment.childFragmentManager.findFragmentById(R.id.google_map)

mapFragment = childFragmentManager.findFragmentById(R.id.google_map) as SupportMapFragment

解决这个问题

【讨论】:

以上是关于为啥 Fragment SupportMapFragment 还没有附加的主要内容,如果未能解决你的问题,请参考以下文章

为啥popbackstack会调用fragment的onCreateView?

为啥进程死亡后Fragment中没有触发onRequestPermissionsResult?

为啥 Fragment 使用 .setCustomAnimations() 在 .hide() 上崩溃?

为啥android fragment 不调用 oncreateview方法

为啥会调用fragment的onCreateView、onCreate、onActivityCreated

Android:何时/为啥我应该使用 FrameLayout 而不是 Fragment?