2012-01-04 26 views
2

3つの異なるMapActivitiesでマップを表示するアプリケーションを開発しています。複数のMapActivitiesで1つのMapViewを使用する方法

これを達成するには、Pete Doyle's port of the Android Compatibility packageを使用してMapActivitiesを拡張するこの3つのFragmentActivitiesでMapFragmentを再利用します。

このMapFragmentで使用されるMapViewは、Application Contextのままです。異なる活性を開くときエラー「このビューはすでに親を持っている」、私は現在の親からのビューを削除しないようにするために

ViewGroup parentViewGroup = (ViewGroup) app.mapViewContainer.getParent(); 
if(null != parentViewGroup) { 
    parentViewGroup.removeView(app.mapViewContainer); 
} 

それはすべての瞬間までよく働きます私は、電話の戻るボタンを押して、以前のMapActivityに行く。現時点では、MapViewはアクティビティを変更するときに親から削除してから黒で表示され、戻るボタンはビューの再作成をトリガーしません。

この投稿は気づいています:実際のところ How to use multiple MapActivities/MapViews per Android application/process

、私は答えダニー・レミントンから活動全体での再使用のMapViewにアイデアを得た - MacroSolveを与えました。

私が実装しようとしている解決策がリソース上ではるかに軽いと考えているので、複数のプロセスを使用しようとはしていません。

ご協力いただければ幸いです。私自身の問題を修正しました

答えて

1

... MapFragmentは、私はちょうどフラグメントからとのMapViewの親からすべてのビューを削除し、フラグメントにのMapViewを追加する必要がありましたが再開されている

@Override 
public void onResume() { 
    super.onResume(); 

    resumed++; 

    if (resumed > 0) { 
     ViewGroup view = (ViewGroup) this.getView(); 
     view.removeAllViews(); 

     ViewGroup parentViewGroup = (ViewGroup) app.mapViewContainer.getParent(); 
     if (parentViewGroup != null) { 
      parentViewGroup.removeAllViews(); 
     } 

     view.addView(app.mapViewContainer); 
    } 
} 
関連する問題