Android 未调用onMapReady的方法
GoogleMap可以工作,但我无法使用它,因为没有调用onMapReady方法。 С也许有人知道原因是什么? 我想我也许能想到一些碎片,因为我只是在学习如何处理它们 检查依赖项-所有已连接 MainActivity.kt:Android 未调用onMapReady的方法,android,android-studio,android-layout,android-fragments,android-intent,Android,Android Studio,Android Layout,Android Fragments,Android Intent,GoogleMap可以工作,但我无法使用它,因为没有调用onMapReady方法。 С也许有人知道原因是什么? 我想我也许能想到一些碎片,因为我只是在学习如何处理它们 检查依赖项-所有已连接 MainActivity.kt: package com.example.weather import android.os.Bundle import android.util.Log import android.view.MenuItem import android.view.View impor
package com.example.weather
import android.os.Bundle
import android.util.Log
import android.view.MenuItem
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import com.google.android.gms.maps.CameraUpdateFactory
import com.google.android.gms.maps.GoogleMap
import com.google.android.gms.maps.OnMapReadyCallback
import com.google.android.gms.maps.SupportMapFragment
import com.google.android.gms.maps.model.LatLng
import kotlinx.android.synthetic.main.map_fragment.*
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;
class MainActivity : AppCompatActivity(),OnMapReadyCallback {
private lateinit var map:GoogleMap
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val mapFragment = supportFragmentManager.findFragmentById(R.id.map) as? SupportMapFragment
mapFragment?.getMapAsync(this)
}
fun onHistoryItemClicked(item: MenuItem) {
supportFragmentManager.beginTransaction()
.add(R.id.fragment_container, HistoryFragment())
.commit()
}
fun onMapItemClicked(item: MenuItem) {
supportFragmentManager.beginTransaction()
.add(R.id.fragment_container, MapFragment())
.commit()
}
override fun onMapReady(googleMap: GoogleMap?) {
Log.d("Tag","StartsOnMap")
googleMap ?: return
val belarus = LatLng(-34.0, 151.0)
with(googleMap) {
moveCamera(CameraUpdateFactory.newLatLngZoom(belarus, 0F))
addMarker(MarkerOptions().position(belarus))
}
}
}
map_fragment.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
android:name="com.google.android.gms.maps.SupportMapFragment"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
调用
getMapAsync()
和onMapReady()
回调应该在MapFragment.kt源文件中,而不是在活动中。除上述内容外,在onViewCreated()中调用getMapAsync()。
package com.example.weather
import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import com.google.android.gms.maps.CameraUpdateFactory
import com.google.android.gms.maps.GoogleMap
import com.google.android.gms.maps.OnMapReadyCallback
import com.google.android.gms.maps.model.LatLng
import com.google.android.gms.maps.model.MarkerOptions
import kotlinx.android.synthetic.main.map_fragment.*
class MapFragment: Fragment() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View {
return inflater.inflate(R.layout.map_fragment, container, false)
}