2012-11-06 1 views
3

MapView을 포함한 2 개의 액티비티가 있습니다. 활동중인지도 뷰의 활동 B 크기가 다릅니다. 통화 순서가 ActivityA ->ActivityB입니다. Activity B에서 A로 돌아 오면지도의 절반이 검은 색으로 표시됩니다 (Google 서명 만 왼쪽으로 유지됩니다). 모서리). 지도 이동이 효과가 없습니다 (지도 하단이 여전히 검은 색 임). 확대/축소하면지도가 제대로 표시됩니다. 나는 다른 ID 년대를 사용하는 안드로이드 매니페스트에서다른 액티비티 사이의 Map-View 크기

, 나는 , onResume() 방법 invalidate()지도보기를 시도했습니다 나는 아무 효과 onResume()도 전체 레이아웃에 findViewById(android.R.id.content).requestLayout() 전화를 시도했습니다. 유일한 해결책은 finish()입니다. 활동은 onPause()이며 활동 B의 키 백에서 다시 생성하십시오. 다른 해결책이 있습니까?

+0

축하합니다. 귀하의 질문은 SO 블로그 게시물에 있습니다. :) http://blog.stackoverflow.com/2012/11/get-rid-of-ads-you-dont-like-and-encourage- ads-you-do-like /? cb = 1 – Carlos

답변

2

당신은 활동이 undelaying의지도 재사용되는 것을 당신의 로그 캣에 표시됩니다

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

    MapController mapController = mMapView.getController(); 

    mapController.setCenter(mCenterPoint); 
    mapController.setZoom(mZoomLevel); 
    mapController.animateTo(mCenterPoint); 
} 

로 :

MapActivity: Recycling map object 

지도에서 이전 설정이 모두 활동에 onResume 방법을 사용하여 복원하려면를 onCreate는 한 번만 호출되며 뒤로 버튼이나 새 Intent는 스택에 실제 인 텐트를 (잘하면) 재사용합니다.

+0

이것은 정확히 내가 뭘 찾고 있었는지는 모르겠지만 @Egor 설명 뒤에, 당신의 해결책은 : '해결 방법'중 하나로 작업하십시오. 감사합니다. – balu

+0

효과가 있었나요? 'MapView'와'MapController'의 모든 초기화 작업을 onResume()으로 옮겼습니다. 그러나 필자는 여전히 당신이 묘사 한 이상한 동작을 가지고 있습니다. (제 경우에는지도의 절반이 검은 색이 아닌 회색입니다 : P) –

+0

첫 번째 작업을 수행 했습니까? 지도는 두 번째 것을 호출하기 전에 처음으로 옳았습니다. – rgrocha

3

Google지도 API를 사용하면 MapView의 여러 인스턴스가 동시에 활성화되지 않을 수 있습니다. Activity B를 Activity A에서 열면 Activity A는 여전히 스택에 남아 있고 해당 MapView은 여전히 ​​작동 중입니다. 따라서 MapViewActivity B에서 인스턴스화하면 이전 인스턴스가 비정상적으로 작동하기 시작합니다. 몇 가지 해결 방법이 있지만 어느 것도 안정적인 것으로 간주 될 수 없으므로 Activity A를 파괴하고 다시 만드는 솔루션을 사용하거나 Activities 중 하나만 MapView 중 하나만 사용하도록 응용 프로그램을 다시 디자인해야합니다. 희망이 도움이됩니다.

+0

설명 주셔서 감사합니다 – balu

+0

@balu, 오신 것을 환영합니다! – Egor

0

아마도지도 onCreate 메서드를 인스턴스화하는 것이므로지도가 처음에는 잘 표시되지만 onCreate 메서드가 호출되지 않아지도가 시작되지 않습니다. 지도 초기화를 onStart 메소드로 이동하십시오.

아마 the Activity lifecycle documentation

PS를 도울 수있다 : 당신이 쉽게 도움 당신을하게 될 코드를 게시합니다.