0

この関数を呼び出すたびにマップビューを膨張させています。また、毎回ビューを削除しています。それでも、子には既に親があり、removeview() を最初に呼び出すというエラーが表示されます。

これを解決する方法のアイデア。

      void getGeoView(Context context) {
        myRoot.removeAllViews();

       LayoutInflater inflater = (LayoutInflater) this
            .getSystemService(LAYOUT_INFLATER_SERVICE);
      View view = inflater.inflate(R.layout.geo_inflator, null);

       ((ViewGroup) view.findViewById(R.id.myMap)).removeAllViews();

      if (mapView == null) {
        mapView = new MapView(this, "0IEmqsWhwmo6Cu8hKdYn_VudUT8IpdKpXzMvQyw");
        ((ViewGroup) view.findViewById(R.id.myMap)).addView(mapView);
      } else {

        ((ViewGroup) view.findViewById(R.id.myMap)).addView(mapView);
      }
4

1 に答える 1

1

あなたが何をしているのかわかりませんが、最も簡単な解決策は次の行を追加することです:

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

エラーが発生した場所に。私はそれがここで起こると思います:

} else {
    ((ViewGroup) mapView.getParent()).removeView(mapView); // Add me
    ((ViewGroup) view.findViewById(R.id.myMap)).addView(mapView);
}
于 2012-11-16T05:35:34.837 に答える