【问题标题】:How to Use View binding in SupportMapFragment?如何在 SupportMapFragment 中使用视图绑定?
【发布时间】:2021-04-03 02:57:51
【问题描述】:

如何在 SupportMapFragment 中使用视图绑定?参考我的代码

我在布局中有一个地图片段,我想在片段中使用视图绑定。

val mapFragment = childFragmentManager.findFragmentById(R.id.map) as 支持地图片段

请需要解决方案..

import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import com.google.android.gms.maps.GoogleMap
import com.google.android.gms.maps.SupportMapFragment
import com.zeddigital.zigmaster.R
import com.zeddigital.zigmaster.databinding.FragmentHomeBinding

class HomeFragment : Fragment() {
    private lateinit var mMap: GoogleMap

    private var binding : FragmentHomeBinding ?=null
    override fun onCreateView(
            inflater: LayoutInflater,
            container: ViewGroup?,
            savedInstanceState: Bundle?
    ): View {
        binding = FragmentHomeBinding.inflate(inflater)

        // binding.myTextView.text = "sample"

        val mapFragment = childFragmentManager.findFragmentById(R.id.map) as SupportMapFragment
        mapFragment.getMapAsync { googleMap ->

        }

        return binding!!.root
    }

    override fun onDestroyView() {
        super.onDestroyView()
        binding=null
    }
}





<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout 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"
    tools:context=".ui.home.HomeFragment">

    <fragment
        android:id="@+id/map"
        android:name="com.google.android.gms.maps.SupportMapFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</androidx.coordinatorlayout.widget.CoordinatorLayout>

【问题讨论】:

    标签: android android-viewbinding


    【解决方案1】:

    我不完全理解这个问题,因为它感觉不完整。但是,如果您想对 MapFragment 的 ID 使用视图绑定,如下面引用的赏金消息中所述:

    如何在 SupportMapFragment' ID 中使用 View 绑定?

    你能做的就是写

    val mapFragment = childFragmentManager.findFragmentById(R.id.map) as SupportMapFragment
    

    作为

    val mapFragment = childFragmentManager.findFragmentById(binding.map.id) as SupportMapFragment
    

    这将防止它为 null,我相信这是您想要的情况。

    【讨论】:

      【解决方案2】:

      上面的答案是正确的,但是对于最新的 Android Studio,我发布了一些代码更改。

      从现在开始建议使用&lt;androidx.fragment.app.FragmentContainerView /&gt;,而不是&lt;fragment /&gt;。

      现在您可以使用如下视图绑定:

      对于 Java:

      SupportMapFragment mapFragment = (SupportMapFragment) childFragmentManager.findFragmentById(binding.map.getId());
      

      对于 Kotlin:

      val mapFragment = childFragmentManager.findFragmentById(binding.map.id) as SupportMapFragment
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-06-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-21
        • 1970-01-01
        相关资源
        最近更新 更多