在模拟器NULLPOINTER上测试设备正常

时间:2014-06-18 12:01:22

标签: android android-activity android-fragments android-emulator

我的应用程序显示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上,我被检查了。我没有在另一个版本上测试它。有人可以帮帮我吗?

2 个答案:

答案 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:

步骤:

  • 选择窗口> Android SDK Manager。

*安装Google Play服务SDK。

滚动到包列表的底部,展开其他内容,选择Google Play服务,然后进行安装。如果您使用的是Android Studio,也请安装Google Repository(它提供用于Gradle构建的Maven存储库)。

*安装兼容版本的Google API平台。

  • 安装包

请参阅此[ [LINK]以获取更多参考资料。