【发布时间】:2015-05-18 18:03:39
【问题描述】:
我尝试将我的 android -studio apk 安装在具有 NEXUS 7 google 和 android verion 5.1.1 的平板设备中。该应用程序根本没有加载我的地图,并且显示的消息是“应用程序已停止”。
我在 NEXUS 7 平板电脑上尝试了我的应用程序的旧版私人版本,它成功了,唯一的区别是我不显示 toast 消息。 Toast 消息指示用户设备中是否可以连接 wi-fi 或移动设备。请在下面找到代码:
private void setUpMap() {
ConnectivityManager conMan = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
if (conMan != null) {
//mobile
NetworkInfo.State mobile = conMan.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();
//wifi
NetworkInfo.State wifi = conMan.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
if (mobile == NetworkInfo.State.CONNECTED || wifi == NetworkInfo.State.CONNECTED)
{
Toast.makeText(getApplicationContext(),"Connection available",Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(getApplicationContext(),"Connection not available",Toast.LENGTH_LONG).show();
}
} // end if
else
{ //do nothing
}
// set position, title, snippet and icon for each marker
mMap.addMarker(new MarkerOptions().position(new LatLng(X, Y)).title("NAME").snippet("SURNAME").icon(BitmapDescriptorFactory.fromResource(R.drawable.location_icon)));
.....
...
} // END SETUPMAP
如果 conMan 不为空,则执行检查(wi-fi 或移动设备),否则不执行任何操作并继续在地图上加载标记。对于 NEXUS 7,检查应该进入 else,因为 conMan 为空,并且应该继续加载标记。但是仍然无法正常工作,该应用程序在 NEXUS 7 中崩溃了。您能告诉我该怎么做吗?
java.lang.RuntimeException: Unable to start activity
ComponentInfo{project.name/project.name.MapsActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2122)
at android.app.ActivityThread.access$600(ActivityThread.java:140)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1228)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4895)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:994)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:761)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at project.name.MapsActivity.setUpMap(MapsActivity.java:147)
at project.name.MapsActivity.setUpMapIfNeeded(MapsActivity.java:64)
at project.name.MapsActivity.onCreate(MapsActivity.java:43)
at android.app.Activity.performCreate(Activity.java:5163)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2061)
... 11 more
这是第 147 行:
private void setUpMap() {
ConnectivityManager conMan = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
if (conMan != null) { //line 147
//mobile
NetworkInfo.State mobile = conMan.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();
【问题讨论】:
-
地图活动第 147 行!
-
第 147 行是空检查: if (conMan != null) {
-
表示您的
conMan为空。 -
@Thanos : 这不是真的 null 检查不能抛出 NPE。也许你必须重新构建你的项目
-
标签: java android google-maps-api-2