2014-02-13 1 views
0

소개는 널지도 내 앱 MapsFragment

에, 나는 방향을 관리해야합니다. 세로 모드에서는 새로운 활동에서 GoogleMapsFragment를 시작합니다. 그러나 가로 모드에서는 주 활동의 오른쪽에서 GoogleMapsFragment를 시작합니다.

protrait 모드에서 모든 것이 잘되고 있다고 말해야합니다. GoogleMapsFragment를 호출하고지도가 새로운 활동에 시작됩니다.

그러나 가로 모드에서

문제, 내가 GoogleMapsFragment를 시작할 때, 나에게 NullPointerException이 발생 앱의 밖으로 가져옵니다.

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

    View mainView = inflater.inflate(R.layout.google_maps, container, false); 

    mMapView = (MapView) mainView.findViewById(R.id.map_view); 
    mMapView.onCreate(savedInstanceState); 

    mMap = mMapView.getMap(); 
    mMap.getUiSettings().setMyLocationButtonEnabled(false); 
    mMap.setMyLocationEnabled(true); 

    //... 

어디 내가 mMap = mMapView.getMap()을 수행 할 때 널이지고있어, 다음에, 그래서 MMAP에 대한 값을 반환하지 않는 것 같습니다 :

은 GoogleMapsFragment의 코드 조각입니다 단계는 mMap이 null이므로 예외를 throw합니다. 세로 모드에서 작업하는 이유를 모르겠어요

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <com.google.android.gms.maps.MapView 
     android:id="@+id/map_view" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" /> 
</LinearLayout> 

하지만 가로 모드 :

이 레이아웃 "google_maps.xml"입니다. 또한 인물 모드가 실제 장치에서 테스트되었고, 가로 모드가 에뮬레이터에서 테스트되었다고 말할 수 있습니다.

이것이 원인 일 경우 어떻게 테스트 할 수 있습니까?

UPDATE - 에뮬레이터에서 구글의 API 4.4.2을 사용

는, 이것은 NullPointerException이 문제를 계속하지만, 이것이 로그 캣도 보여줍니다 것입니다 :

Google Play services out of date. Requires 4132500 but found 4033530 

답변

0

당신이 그것을 호출하는 생각 너무 일찍 (여기에서 확인하십시오 : https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/MapFragment#getMap%28%29, onCreateView 아직 완료되지 않았습니다.) 그것은 여전히 ​​null인지 확인하는 것이 좋습니다.

서비스가 포함되지 않은 경우에도 에뮬레이터가 원인 일 수 있습니다. (How to download Google Play Services in an Android emulator?)

+0

그럴 수도 있지만 ... 너무 일찍 부르면 ... 세로로 작동하면 풍경에서도 작동하지 않아야합니까? 또한, GPServices에 관해서는 안드로이드 4.2.2 에뮬레이터가 이러한 서비스와 함께 작동 할 수 있다고 말하고 있으며 안드로이드 4.4.2와 함께 작업하고 있습니다. – masmic