2

3 つの異なる MapActivities で地図を表示するアプリを開発しています。

これを実現するために、この 3 つの FragmentActivities 全体で MapFragment を再利用します。この 3 つの FragmentActivitiesは、 Android 互換パッケージのPete Doyleのポートを使用して MapActivities を拡張します。

この MapFragment で使用される MapView は、Application Contextに保持されます。

「このビューには既に親があります」というエラーを回避するために、別のアクティビティを開くときに現在の親からビューを削除します。

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

電話の戻るボタンを押して前の MapActivity に到達するまで、すべて正常に機能します。現時点では、アクティビティを変更するときに MapView を親から削除したため、MapView はすべて黒であり、戻るボタンはビューの再作成をトリガーしません...

私はこの投稿を認識しています: How to use multiple MapActivities/MapViews per Android application/process

実際のところ、Danny Remington - MacroSolveの回答から、活動全体で MapView を再利用するというアイデアを得ました。

実装しようとしているソリューションはリソースがはるかに少ないと信じているため、複数のプロセスを使用しようとはしていません。

どんな助けでも大歓迎です!

4

1 に答える 1

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);
    }
}
于 2012-01-05T17:10:09.227 に答える