0

내지도보기 솔루션에 스크린 능력은 크게 SO 게시물이에 ChristophK, user1414726 및 inazaruk에서 제공하는 예제를 기반으로 할 때 : mapview-in-a-fragment지도보기 조각 블랙 (보기가 null) 표시하는 조각에서 다시

onPause ()가 Fragment에서 호출되면 IllegalArgumentException을 피하기 위해 일부 정리가 수행됩니다. onPause 및 중지시에 코드 :이 다른 조각에 보내 주시면 동안 mapViewContainer가 다시 인스턴스화된다 MapActivity가 다시 표시 될 때 onCreateView (..)이 조각에서 재정의됩니다 때문에 onPause가 호출 될 때 잘 작동

if (mapViewContainer != null) { 
mapViewContainer.setVisibility(View.GONE); 
((ViewGroup) mapViewContainer.getParent()).removeView(mapViewContainer); 
mapViewContainer = null; 
} 

.

그러나 화면을 끄면입니다. 화면의 전원을 다시 켜면 onCreateView (..)가 무시되지 않습니다 (onPaused 및 onResume 호출이 정상적으로 작동 함). 이로 인해 MapView는 onPreateView (..)가 일부 상호 작용 후에 다시 호출 될 때까지 뷰가 onPause의 removeView 호출에서 null이므로 검정색으로 표시됩니다.

어떻게 onCreateView를 재정의하거나 화면의 전원을 다시 켰을 때 MapView를 다시 조각에 추가 할 수 있습니까? onCreateView 내부

코드 (..) :

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
Bundle savedInstanceState) { 
// This is where you specify you activity class 
Intent i = new Intent(getActivity(), MapTabActivity.class); 
Window w = mLocalActivityManager.startActivity("tag", i); 
mapViewContainer = w.getDecorView(); 
mapViewContainer.setVisibility(View.VISIBLE); 
mapViewContainer.setFocusableInTouchMode(true); 
((ViewGroup) 
mapViewContainer).setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS); 
return mapViewContainer; } 

건배.

답변

1

Google 문제에 대한 답변을 찾았을 수 있습니다. 괜찮은 것 같아 보이지만 작동하는 것 같아요.

onStart()에서 mapViewContainer의 부모에 대한 참조 (정적으로 만들었습니다)를 저장하면 onResume의 부모에 mapViewContainer를 추가 할 수 있습니다()가 아직 포함되어 있지 않은 경우. 여기

내가 무슨 짓을 : 나는 == 널 (null)을 mapViewContainer을 설정하지 onPause에서

private static ViewParent parent; 
@Override 
public void onStart() { 
    super.onStart(); 

    parent = mapViewContainer.getParent();  

} 

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


    if(mapViewContainer != null && parent != null && ((FrameLayout) parent).findViewById(mapViewContainer.getId()) == null) { 
     ((FrameLayout) parent).addView(mapViewContainer); 
    } 
} 

(), 그래서 그것을 다시 사용할 수 있습니다.

이 '솔루션'을 개선하기위한 제안 사항이 있으면 매우 환영합니다!

희망이 있습니다.

CHEERS

+0

환상적인! 첫 번째 onCreateView 호출에서 부모를 얻을 수 있다고 가정했지만 키는 onStart에서 가져 오는 것입니다. 코드에서와 마찬가지입니다. 감사! – gorn

관련 문제