0

我成功地建立了一個android maps v2地圖片段,它在我的智能手機上工作正常。現在我插入我的平板電腦,當我嘗試啓動地圖活動時,我收到了NPE。我現在完全無能爲力;甚至不知道錯誤的來源可能是什麼。誰能幫忙? THXNPE上SupportMapFragment

的OnCreate地圖活性的:

FragmentManager myFragmentManager = getSupportFragmentManager(); 
    SupportMapFragment mySupportMapFragment = (SupportMapFragment)myFragmentManager.findFragmentById(R.id.customer_map_fragment); 
    mMap = mySupportMapFragment.getMap(); 
    mMap.setMyLocationEnabled(true);     <-- line 103 with the NPE 
    mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL); 

customer_map_activity.xml:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 
<fragment 
     android:id="@+id/customer_map_fragment" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     class="com.google.android.gms.maps.SupportMapFragment"/> 
</FrameLayout> 

logcat的:

08-12 11:08:27.449: E/AndroidRuntime(3562): FATAL EXCEPTION: main 
08-12 11:08:27.449: E/AndroidRuntime(3562): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.cocus.salesapp/com.cocus.salesapp.TestCustomerMapActivity}: java.lang.NullPointerException 
08-12 11:08:27.449: E/AndroidRuntime(3562):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2185) 
08-12 11:08:27.449: E/AndroidRuntime(3562):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2210) 
08-12 11:08:27.449: E/AndroidRuntime(3562):  at android.app.ActivityThread.access$600(ActivityThread.java:142) 
08-12 11:08:27.449: E/AndroidRuntime(3562):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1208) 
08-12 11:08:27.449: E/AndroidRuntime(3562):  at android.os.Handler.dispatchMessage(Handler.java:99) 
08-12 11:08:27.449: E/AndroidRuntime(3562):  at android.os.Looper.loop(Looper.java:137) 
08-12 11:08:27.449: E/AndroidRuntime(3562):  at android.app.ActivityThread.main(ActivityThread.java:4931) 
08-12 11:08:27.449: E/AndroidRuntime(3562):  at java.lang.reflect.Method.invokeNative(Native Method) 
08-12 11:08:27.449: E/AndroidRuntime(3562):  at java.lang.reflect.Method.invoke(Method.java:511) 
08-12 11:08:27.449: E/AndroidRuntime(3562):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791) 
08-12 11:08:27.449: E/AndroidRuntime(3562):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:558) 
08-12 11:08:27.449: E/AndroidRuntime(3562):  at dalvik.system.NativeStart.main(Native Method) 
08-12 11:08:27.449: E/AndroidRuntime(3562): Caused by: java.lang.NullPointerException 
08-12 11:08:27.449: E/AndroidRuntime(3562):  at com.fghj.salesapp.TestCustomerMapActivity.onCreate(TestCustomerMapActivity.java:103) 

編輯: 在手機上它只在肖像上運行。在平板電腦上它被迫使用風景。

回答

1

您可以通過致電GooglePlayServicesUtil.isGooglePlayServicesAvailable瞭解原因。

它會返回一個int值,您可以與ConnectionResult constants比較。

+0

即時檢查我的onResume。看起來像我必須將它移動到onCreate然後!? – bofredo

+1

@bofredo我寧願在一個啓動此Activity的Activity中進行此項檢查,該Activity包含MapFragment,而不是啓動它,顯示一個對話框,該地圖無法查看。取決於代碼中是否存在這樣的地方,但是:在嘗試獲取「GoogleMap」引用並在GoogleMap引用爲null時作出條件之前,請執行此操作。 –

+0

這很奇怪。我的手機返回「0」,而我的平板電腦返回「2」。 – bofredo