MapView를 사용하는 동안 내 전략은 매우 간단했지만 Android Map v2로 전환하고 MapFragment를 사용해야합니다. 내 시나리오는 이벤트 목록을 가져 오는 것과 관련이 있습니다. 그런 다음 위도와 경도를 사용하여 사용자와의 거리를 계산하고지도 위에 배치하려면 백그라운드에서 지오 코딩해야합니다. 사용자가리스트와 맵 프래그먼트간에 전환 할 수있게 해주는 작업 표시 줄 버튼이 있지만 문제점은 메모리에 두 프래그먼트를 유지하고 수명주기를 피하는 방법입니다. 따라서 목록 어댑터를 업데이트하는 동안 계속해서 맵 조각에 마커를 추가 할 수 있습니다. 목록 조각에?AsyncTask로 두 단편을 모두 업데이트하는 동안 안드로이드에서 맵 조각과 목록 조각을 교환하는 방법
현재 각 Fragment와 함께 FragmentTransaction.replace로 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();
}
내가 대답에 감사를 찾을 수 있습니다. show/hide를 사용하는 것이 올바른 일이었습니다. – egfconnor
또한 MapFragment에서 onActivityCreated()가 발생하기 전까지는 GoogleMap을 검색 할 수 없으므로 콜백을 사용하여 해당 부분 이후에 작업을 수행합니다. 필요한 경우 코드를 표시 할 수 있습니다. – egfconnor
예, 내 코드는 그 사실을 반영하지 않지만 그 점도 눈치 챘습니다. 다른 사람에게 내 코드를 사용하는 것에 대한 또 다른 경고는 회전이 잘 작동하지 않는다는 것입니다. 그러나 이것은 인스턴스 상태를 저장하는 것을 통해 해결하기가 너무 어렵지 않아야합니다. – codedawg82