Android 如何在SupportMapFragment中使用视图绑定?
如何在SupportMapFragment中使用视图绑定?参考我的代码 我在布局中有一个地图片段,我想在片段中使用视图绑定 val mapFragment=childFragmentManager.findFragmentById(R.id.map)为 SupportMapFragment Plz需要解决方案Android 如何在SupportMapFragment中使用视图绑定?,android,android-viewbinding,Android,Android Viewbinding,如何在SupportMapFragment中使用视图绑定?参考我的代码 我在布局中有一个地图片段,我想在片段中使用视图绑定 val mapFragment=childFragmentManager.findFragmentById(R.id.map)为 SupportMapFragment Plz需要解决方案 import android.os.Bundle import android.view.LayoutInflater import android.view.View import an
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.os.Bundle
导入android.view.LayoutInflater
导入android.view.view
导入android.view.ViewGroup
导入androidx.fragment.app.fragment
导入com.google.android.gms.maps.GoogleMap
导入com.google.android.gms.maps.SupportMapFragment
导入com.zeddigital.zigmaster.R
导入com.zeddigital.zigmaster.databinding.FragmentHomeBinding
类HomeFragment:Fragment(){
私有lateinit var mMap:GoogleMap
私有变量绑定:FragmentHomeBinding?=null
覆盖创建视图(
充气机,
容器:视图组?,
savedInstanceState:捆绑?
):查看{
装订=碎片装订。充气(充气机)
//binding.myTextView.text=“示例”
val mapFragment=childFragmentManager.findFragmentById(R.id.map)作为SupportMapFragment
mapFragment.getMapAsync{googleMap->
}
返回绑定!!.root
}
重写onDestroyView(){
super.onDestroyView()
binding=null
}
}
我不完全理解这个问题,因为它感觉不完整。但是,如果您想对MapFragment的ID使用视图绑定,如下面引用的赏金消息中所述:
如何在SupportMapFragment的ID中使用视图绑定
你能做的就是简单地写
val mapFragment = childFragmentManager.findFragmentById(R.id.map) as SupportMapFragment
作为
这将防止它为空,我相信这是您想要的情况。上述答案是正确的,但对于最新的Android Studio,我将发布一些代码更改 从现在起,建议使用
而不是
现在您可以使用视图绑定,如下所示:
对于Java:
SupportMapFragment mapFragment=(SupportMapFragment)childFragmentManager.findFragmentById(binding.map.getId());
对于科特林:
val mapFragment=childFragmentManager.findFragmentById(binding.map.id)作为SupportMapFragment
val mapFragment = childFragmentManager.findFragmentById(binding.map.id) as SupportMapFragment