删除视图并重新创建它

时间:2011-03-07 06:15:14

标签: android

有没有办法删除使用

设置的视图
setContentView(R.layout.set_map_center);
mapView = (MapView) findViewById(R.id.mapview);

如果我再次调用此视图,则会收到错误消息:

  

java.lang.IllegalStateException:你   只允许有一个   MapActivity中的MapView

3 个答案:

答案 0 :(得分:1)

((ViewGroup)mapView.getParent()).removeView(mapView);

答案 1 :(得分:0)

试试这个.. 首先通过以下代码对您尝试在setContentView()中设置的视图进行充气;

layout = new LinearLayout(context);
    layout.setVisibility(VISIBLE);
    v = View.inflate(getContext(), R.layout.set_map_center, layout);
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
            LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.gravity = Gravity.NO_GRAVITY;
    addView(layout, params);
    v.setVisibility(VISIBLE);
layout.setVisibility(VISIBLE);

无论何时想要删除视图,您都可以简单地说layout.setVisibility(GONE) 如果您无法访问GONE,请说View.GONE

答案 2 :(得分:0)

我认为每个人都是对的,它对我来说就像是一个缺陷。我应该能够给视图充气并在其中使用地图,如果我回想起视图,那么就可以删除它或者再次查看它而不会出错。

最简单的解决方法是使用xml移除膨胀或setContentView,然后使用动态构建的地图,然后将其存储在内存中。

我删除了

// Show Map Settings Screen
setContentView(R.layout.set_map_center);

// Initiate the center point map
if (mapView == null) {
    mapView = (MapView) findViewById(R.id.mapview);
}

并将其替换为:

if (mapView == null) {
   // public MapView mapView = null; // Public defined Variable
   mapView = new MapView(this, this.getString(R.string.APIMapKey));
}

setContentView(mapView);

这很好用,让我有机会打电话给地图。感谢您回复所有人。