これを行うための私の戦略は、MapView を使用しているときは非常に単純でしたが、現在 Android Maps v2 に移行しているため、MapFragment を使用する必要があります。私のシナリオでは、イベントのリストを取得する必要があります。次に、これらをバックグラウンドでジオデコードして緯度と経度を取得し、ユーザーからの距離を計算してマップに配置する必要があります。ユーザーがリスト フラグメントとマップ フラグメントを切り替えることができるアクションバー ボタンがありますが、問題は、リスト アダプターの更新中にマップ フラグメントにマーカーを継続的に追加できるように、両方のフラグメントをメモリに保持し、ライフサイクルを回避する方法です。リストフラグメントで?
現在、FrameLayout を FragmentTransaction.replace で各 Fragment に置き換えていますが、これにより他のフラグメントが破壊されますが、単に非表示にしたいだけです (MapView の可視性を View.GONE に設定する前に)。
編集
私のコードは次のようになりました:
@Override
public void swapFragments() {
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction transaction = fm.beginTransaction();
if (listFragment.isVisible()) {
transaction.hide(listFragment);
if (mapFragment.isAdded()) {
transaction.show(mapFragment);
} else {
transaction.add(R.id.root, mapFragment);
}
} else {
transaction.hide(mapFragment);
transaction.show(listFragment);
}
transaction.commit();
}