我在使用 MapView 时执行此操作的策略非常简单,但我现在正在过渡到 Android Maps v2 并且必须使用 MapFragment。我的场景涉及获取事件列表,然后我需要在后台对这些事件进行地理解码以获取它们的纬度和经度,以计算与用户的距离并放置到地图上。我有一个操作栏按钮,允许用户在列表和地图片段之间切换,但我的问题是如何将两个片段保存在内存中并避免它们的生命周期,以便我可以在更新列表适配器时不断向地图片段添加标记在列表片段中?
目前我用 FragmentTransaction.replace 用每个 Fragment 替换 FrameLayout,但这会导致另一个被破坏,而我只是希望它被隐藏(在我简单地将 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();
}