我正在做地理围栏,并尝试初始化地图,但出现此错误:
java.lang.NullPointerException:尝试调用虚拟方法'void com.google.android.gms.maps.MapFragment.getMapAsync(com.google.android.gms.maps.OnMapReadyCallback)' 在空对象引用上
我还尝试了在stackoverflow上找到的所有解决方案,但找不到解决问题的方法。
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_width="match_parent"
android:layout_height="match_parent"/>
E / Android运行时:致命异常:主要 流程:com.utkukayman.locationbasedreminderbyutku,PID:22875 java.lang.RuntimeException:无法启动活动ComponentInfo {com.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) 应用已终止。
有人可以帮助我吗?感谢您的回答
答案 0 :(得分:2)
您是在夸大SupportMapFragment
,而不是MapFragment
。
在活动中使用getSupportFragmentManager()
,并将findFragment()
的结果强制转换为SupportMapFragment
。
根据您的用例,您的活动需要扩展AppCompatActivity
或FragmentActivity
。
答案 1 :(得分:0)
对不起,这全是我的愚蠢过失。
super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ----->应该是activity_maps