java.lang.NullPointerException: MapFragment.getMapAsync(com.google.android.gms.maps.OnMapReadyCallba

Posted

技术标签:

【中文标题】java.lang.NullPointerException: MapFragment.getMapAsync(com.google.android.gms.maps.OnMapReadyCallback)【英文标题】: 【发布时间】:2019-05-25 02:38:20 【问题描述】:

我正在研究地理围栏,并尝试初始化地图,但出现此错误:

java.lang.NullPointerException: 尝试调用虚方法 'void com.google.android.gms.maps.MapFragment.getMapAsync(com.google.android.gms.maps.OnMapReadyCallback)' 在空对象引用上

我还尝试了我在 *** 上找到的所有解决方案,但我找不到我的问题的解决方案。

 private void initGMaps()
    mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);




 protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textLat = (TextView) findViewById(R.id.lat);
        textLong = (TextView) findViewById(R.id.lon);

        // initialize GoogleMaps

        initGMaps();

        // create GoogleApiClient
        createGoogleApi();
    

<!--GoogleMap fragment-->
    <fragment xmlns:android="http://schemas.android.com/apk/res/android"
        android:name="com.google.android.gms.maps.SupportMapFragment"
        android:id="@+id/map"
        android:layout_
        android:layout_/>

E/AndroidRuntime: 致命异常: main 进程:com.utkukayman.locationbasedreminderbyutku,PID:22875 java.lang.RuntimeException:无法启动活动 ComponentInfocom.utkukayman.locationbasedreminderbyutku/com.utkukayman.locationbasedreminderbyutku.MapsActivity:java.lang.NullPointerException:尝试调用虚拟方法 'void com.google.android.gms.maps。 MapFragment.getMapAsync(com.google.android.gms.maps.OnMapReadyCallback)' 在空对象引用上 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726) 在 android.app.ActivityThread.-wrap12(ActivityThread.java) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:154) 在 android.app.ActivityThread.main(ActivityThread.java:6119) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 原因:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法 'void com.google.android.gms.maps.MapFragment.getMapAsync(com.google.android.gms.maps.OnMapReadyCallback)' 在 com.utkukayman.locationbasedreminderbyutku.MapsActivity.initGMaps(MapsActivity.java:188) 在 com.utkukayman.locationbasedreminderbyutku.MapsActivity.onCreate(MapsActivity.java:82) 在 android.app.Activity.performCreate(Activity.java:6679) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726) 在 android.app.ActivityThread.-wrap12(ActivityThread.java) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:154) 在 android.app.ActivityThread.main(ActivityThread.java:6119) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 应用程序终止。

谁能帮帮我?谢谢解答

【问题讨论】:

【参考方案1】:

你在夸大SupportMapFragment,而不是MapFragment

在活动中使用 getSupportFragmentManager() 并将 findFragment() 结果转换为 SupportMapFragment

您的活动需要扩展 AppCompatActivityFragmentActivity,具体取决于您的用例。

【讨论】:

它仍然会在 SupportMapFragment 上打开 null 异常,它还在 onCreate 方法上显示错误。我认为这个错误是关于在哪里初始化地图,你对此有什么想法吗?感谢您的帮助:) 首先检查地图片段是否真的在加载。评论initGMaps() 并开始活动。它不应该崩溃,因此请检查您是否可以在大西洋中部看到地图。还要确保&lt;fragment android:id="@+id/map&gt;layout/activity_main.xml 内。【参考方案2】:

对不起,这都是我愚蠢的错。

super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ----->应该是activity_maps

【讨论】:

以上是关于java.lang.NullPointerException: MapFragment.getMapAsync(com.google.android.gms.maps.OnMapReadyCallba的主要内容,如果未能解决你的问题,请参考以下文章

亲測,Eclipse报&quot;An error has occurred,See error log for more details. java.lang.NullPointerExce

来自 LayerDrawable 的异常

Microsoft Access 和 Java JDBC-ODBC 错误

如何使用其id获取单个SQLite行数据?