Android 未调用onMapReady的方法

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

GoogleMap可以工作,但我无法使用它,因为没有调用onMapReady方法。 С也许有人知道原因是什么? 我想我也许能想到一些碎片,因为我只是在学习如何处理它们 检查依赖项-所有已连接

MainActivity.kt:

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)


    }