Eiseno 2013-01-29 07:55 采纳率: 100%
浏览 3258
已采纳

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 2013-01-29 08: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。希望这个有用。或者试试不同的逻辑。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 用python如何确定子元素在父元素中的位置
  • ¥15 obj文件滤除异常高程
  • ¥15 用mathematicas或者matlab计算三重积分
  • ¥15 Loop unrolling的runtime计算
  • ¥100 NVMe-oF的Target端,开启attr_offload后,测试失败。
  • ¥100 有偿照片马赛克去掉,保留原始数据
  • ¥15 c# winform http报错,如何解决?
  • ¥15 统计软件及应用-r软件
  • ¥15 爬虫返回的js数据结构如何处理
  • ¥15 python初学者中间insert部分不知道怎么写,请教各位中间如何填写。还想问问大家0基础如何入手python和c语言,期待各位的回复和帮助。