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
。
您的活动需要扩展 AppCompatActivity
或 FragmentActivity
,具体取决于您的用例。
【讨论】:
它仍然会在 SupportMapFragment 上打开 null 异常,它还在 onCreate 方法上显示错误。我认为这个错误是关于在哪里初始化地图,你对此有什么想法吗?感谢您的帮助:) 首先检查地图片段是否真的在加载。评论initGMaps()
并开始活动。它不应该崩溃,因此请检查您是否可以在大西洋中部看到地图。还要确保<fragment android:id="@+id/map>
在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报"An error has occurred,See error log for more details. java.lang.NullPointerExce