我的应用程序显示mapfragment并在其上绘制几个标记。 当我在真实设备上运行时,即便可以,但是当我使用AVD模拟器或Genymotion模拟器时,我发现了这种错误(来自Logcat):
06-18 11:51:02.743: E/AndroidRuntime(1825): FATAL EXCEPTION: main
06-18 11:51:02.743: E/AndroidRuntime(1825): java.lang.RuntimeException: Unable to resume activity {com.flex.sklepik/com.flex.sklepik.ReadComments}: java.lang.NullPointerException
06-18 11:51:02.743: E/AndroidRuntime(1825): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2120)
06-18 11:51:02.743: E/AndroidRuntime(1825): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2135)
06-18 11:51:02.743: E/AndroidRuntime(1825): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1668)
06-18 11:51:02.743: E/AndroidRuntime(1825): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
06-18 11:51:02.743: E/AndroidRuntime(1825): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
06-18 11:51:02.743: E/AndroidRuntime(1825): at android.os.Handler.dispatchMessage(Handler.java:99)
06-18 11:51:02.743: E/AndroidRuntime(1825): at android.os.Looper.loop(Looper.java:130)
06-18 11:51:02.743: E/AndroidRuntime(1825): at android.app.ActivityThread.main(ActivityThread.java:3683)
06-18 11:51:02.743: E/AndroidRuntime(1825): at java.lang.reflect.Method.invokeNative(Native Method)
06-18 11:51:02.743: E/AndroidRuntime(1825): at java.lang.reflect.Method.invoke(Method.java:507)
06-18 11:51:02.743: E/AndroidRuntime(1825): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
06-18 11:51:02.743: E/AndroidRuntime(1825): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
06-18 11:51:02.743: E/AndroidRuntime(1825): at dalvik.system.NativeStart.main(Native Method)
06-18 11:51:02.743: E/AndroidRuntime(1825): Caused by: java.lang.NullPointerException
06-18 11:51:02.743: E/AndroidRuntime(1825): at com.flex.sklepik.ReadComments.wczytajMape(ReadComments.java:423)
06-18 11:51:02.743: E/AndroidRuntime(1825): at com.flex.sklepik.ReadComments$LoadComments.onPreExecute(ReadComments.java:299)
06-18 11:51:02.743: E/AndroidRuntime(1825): at android.os.AsyncTask.execute(AsyncTask.java:391)
06-18 11:51:02.743: E/AndroidRuntime(1825): at com.flex.sklepik.ReadComments.onResume(ReadComments.java:160)
06-18 11:51:02.743: E/AndroidRuntime(1825): at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1150)
06-18 11:51:02.743: E/AndroidRuntime(1825): at android.app.Activity.performResume(Activity.java:3832)
06-18 11:51:02.743: E/AndroidRuntime(1825): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2110)
06-18 11:51:02.743: E/AndroidRuntime(1825): ... 12 more
和 第423行的代码如下所示:
public boolean wczytajMape() {
if (mMap == null) {
SupportMapFragment mapFrag = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mMap = mapFrag.getMap();
mMap.setOnMarkerClickListener(this); \\----->423 line
mMap.setMyLocationEnabled(true);
}
return (mMap != null);
}
这个错误真的很烦人,它发生在API 10和API 17上,我被检查了。我没有在另一个版本上测试它。有人可以帮帮我吗?
答案 0 :(得分:0)
检查您的模拟器(AVD Manager)是否具有Google Play API版本,否则您将无法使用地图和更多功能
希望有所帮助
编辑:恐怕我错了,你将无法直接在你的模拟器中使用地图。谷歌没有提供这样做的手段。没有官方的方式来获得这些功能,但是他们非常气馁,所以我不建议你使用它们。
答案 1 :(得分:0)
通过使用OnInfoWindowClickListener来管理它以使其工作。
尝试此代码:
Marker marker_1;
mMap.setOnMarkerClickListener((OnMarkerClickListener));
@Override
public boolean onMarkerClick(Marker marker) {
// TODO Auto-generated method stub
if(marker.equals(marker_1)){
Log.w("Click", "test");
return true;
}
return false;
}
在此之前,请检查您的SDK管理员以查看Google Play地图 对于Eclipse:
步骤:
*安装Google Play服务SDK。
滚动到包列表的底部,展开其他内容,选择Google Play服务,然后进行安装。如果您使用的是Android Studio,也请安装Google Repository(它提供用于Gradle构建的Maven存储库)。
*安装兼容版本的Google API平台。
请参阅此[ [LINK]以获取更多参考资料。