当我更改活动并返回地图时,地图碎片会崩溃

时间:2012-10-24 08:52:22

标签: android android-fragments android-activity android-mapview

我有一个带有一些活动的应用程序,但在每个活动中我都有一些片段。活动的布局将RelativeLayout作为片段容器。我在ActionBarSherlock中添加了标签导航,标签用于观看地图。

我使用过MapViewBalloons库。当我单击选项卡时,我将片段替换为相应的片段。

在Map Fragment中,我使用了一个静态变量来保存我的mapView对象,每次访问这个片段时都不会创建一个新的。

我可以输入地图片段,将其移动到那里,触摸并移动地图。然后用一个标签更改为另一个片段,没有更改活动,我仍然有相同的地图,相同的情况,我可以在那里导航。

问题:如果我按下后退按钮,如果我改变方向(我猜,如果活动被销毁并重新创建)我可以再次进入地图,但是如果我试图移动那里它会崩溃并且我'我有这个错误:

无法添加Window,令牌android.view.ViewRootImpl $ ...无效,您的活动是否在运行?

static TapControlledMapView mapView;
onCreateView...
if (mapView == null) {
//do things
else 
parentViewGroup.removeView(mapView);
        Button botonFiltro = (Button) parentViewGroup
                .findViewById(R.id.botonFiltro);
        parentViewGroup.removeView(botonFiltro);
        inf.addView(mapView);
return inf;

这就是我处理“你只能拥有一张地图”的东西。

所以...如果我改变活动,为什么会崩溃?我已经检查过parentViewGroup不是null,所以MapView有一个父(我不知道这是否有任何意义)。

我的TabListener就是这样;

public class MyTabListener实现TabListener {

public Fragment fragment;

public MyTabListener(Fragment fragment) {
    super();
    this.fragment = fragment;
}

@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
    //TODO: onTabReselected
}

@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {        
    ft.replace(R.id.fragmentContainer, fragment);
}

@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
    ft.remove(fragment);
}

最奇怪的是,如果我第一次进入时没有触摸地图,或者第二次触摸地图,它就不会崩溃。

我是Android的新手,所以也许我做错了。有人能帮助我吗?

编辑:我使用了另一个库来制作兼容的ABS,片段和地图。我关注过这个博客:http://xrigau.wordpress.com/2012/03/22/howto-actionbarsherlock-mapfragment-listfragment/

修复!问题是我在评论中谈到的问题。听众被附加到旧活动。添加新的监听器并完成!

0 个答案:

没有答案