2 eiseno Eiseno 于 2013.01.29 15:55 提问

android:MapActivity报错:Nullpointerexception

当我第一次加载我的app时,mapActivity是可以调用的,而且我能看到地图。现在当我关掉networkconnectivity再打开,改变屏幕,回到mapactivity,地图显示为空,在new MapUtils().drawMap(this); in onResume()方法这一行得到空指针异常。

@Override
protected void onResume() {
    Utils utils = new Utils();
    manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    listener = new ManageLocation();

    listener.setSucessCallBack(this, "setLocation");
    listener.setFailureCallBack(this, "setNoLocation");


    manager.requestLocationUpdates(
            utils.getCurrentPlaceLocationProvider(manager), 0, 0,
            listener);
    super.onResume();

    Log.d(TAG, "Constants.isDataLoadedPAB " + Constants.isMaptobeLoaded
            + " Constants.isDataLoadedPAB : " + Constants.isDataLoadedPAB);
    if (Constants.isMaptobeLoaded) {
        if (Constants.isDataLoadedPAB) {
            try {
                new MapUtils().drawMap(this);
            } catch (Exception e) {
                Log.e(TAG, "Error", e);
            }
        } else {
            if (Constants.currentLocation != null
                    && Constants.searchLocation != null) {
                if (Constants.searchResultData == null) {
                    Constants.searchResultData = new ArrayList<AttractionData>();
                }

                new MapUtils().drawMap(this);

            }
            }
    }
    ((ImageView) activity.findViewById(R.id.left)).setEnabled(true);
    ((ImageView) activity.findViewById(R.id.right)).setEnabled(true);   
    ((ImageView) findViewById(R.id.searchicon)).setEnabled(true);

    ((ImageView) activity.findViewById(R.id.facebookintegration)).setEnabled(true);
}

我尝试在onResume()再次调用它,但是仍然得到空。我不知道我做错了什么,有没有谁能帮帮我?

my log

01-29 11:23:36.325: E/AndroidRuntime(6668): Caused by: java.lang.NullPointerException
01-29 11:23:36.325: E/AndroidRuntime(6668):     at org.appright.myneighborhood.maps.MapUtils.drawMap(MapUtils.java:59)
01-29 11:23:36.325: E/AndroidRuntime(6668):     at org.appright.myneighborhood.activity.CityAttractions.onResume(CityAttractions.java:505)
01-29 11:23:36.325: E/AndroidRuntime(6668):     at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1199)
01-29 11:23:36.325: E/AndroidRuntime(6668):     at android.app.Activity.performResume(Activity.java:5280)
01-29 11:23:36.325: E/AndroidRuntime(6668):     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2606)
01-29 11:23:36.325: E/AndroidRuntime(6668):     ... 10 more

1个回答

Sueyexin
Sueyexin   2013.01.29 16:55
已采纳

问题在这一行

FrameLayout topLayout = (FrameLayout) activity.findViewById(R.id.map_container);
                    topLayout.removeAllViews();

MapUtils().drawMap(this);

你想做的就是从container移除所有的view,也就是当网络链接不可用的时候 FrameLayout map_container

当网络链接的时候,你访问从layout删除的MapView,他无法找到defaultmapView,所以就抛出了异常。
尝试在另外一个块中comment所有的代码,然后只显示一个toast。希望这个有用。或者试试不同的逻辑。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!