【发布时间】:2019-07-09 15:32:36
【问题描述】:
我的项目有一个标签栏,每个标签栏显示一个不同的片段。 其中一个是一个片段,它带有另一个来自谷歌地图的片段,我找不到让它工作的方法。 主要错误(显然)是
this.childFragmentManager.findFragmentById(R.id.map) 为 支持地图片段
返回空值。
我的代码是这样的。
有地图的片段
class SpotListFragment : SupportMapFragment(), OnMapReadyCallback {
private lateinit var mMap: GoogleMap
lateinit var api : Api
lateinit var localStorage: LocalStorage
override fun onMapReady(googleMap: GoogleMap) {
mMap = googleMap
// Add a marker in Sydney and move the camera
val sydney = LatLng(-34.0, 151.0)
mMap.addMarker(MarkerOptions().position(sydney).title("Marker in Sydney"))
mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney))
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
val view: View = inflater!!.inflate(R.layout.fragment_spot_list, container, false)
view.borrarToken.setOnClickListener {
this.localStorage.deleteAll()
val intent = Intent(activity?.applicationContext!!, LoginActivity::class.java)
startActivity(intent)
}
val mapFragment = this.childFragmentManager.findFragmentById(R.id.map) as SupportMapFragment
mapFragment.getMapAsync(this)
return view
}
片段 xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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"
xmlns:design="http://schemas.android.com/apk/res-auto"
tools:context=".Fragments.SpotListFragment"
android:orientation="vertical"
android:background="@color/white">
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
<Button
android:id="@+id/borrarToken"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Borrar token"/>
<ListView
android:layout_gravity="bottom|center"
android:id="@+id/spotsListView"
android:layout_width="match_parent"
android:layout_height="245dp"
android:paddingBottom="60dp"
android:textColor="@color/black"
/>
</FrameLayout>
标签栏活动。
class MainNavActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val spotListFragment = SpotListFragment.newInstance()
openFragment(spotListFragment)
navigationView.setOnNavigationItemSelectedListener {
when(it.itemId) {
R.id.spotsListNav -> {
val spotListFragment = SpotListFragment.newInstance()
openFragment(spotListFragment)
true
}
R.id.searchNav -> {
true
}
R.id.createSpotNav -> {
val createSpotFragment = CreateSpotFragment.newInstance()
openFragment(createSpotFragment)
true
}
R.id.feedNav -> {
true
}
R.id.profileNav -> {
true
}
else -> {
false
}
}
}
}
private fun openFragment(fragment: Fragment) {
val transaction = supportFragmentManager.beginTransaction()
transaction.replace(R.id.container, fragment)
transaction.addToBackStack(null)
transaction.commit()
}
}
希望你能帮助我,我真的不知道该怎么办。 谢谢!
【问题讨论】:
标签: android google-maps kotlin