2014-01-07 82 views
0

我試圖在使用分段的同時在我的android應用中實施Google地圖V2。嘗試加載Google地圖V2時Android應用崩潰[解決!]

但是,當我試圖查看地圖時,代碼顯示沒有錯誤,它崩潰。

我一直在這個問題上停留了一段時間,所以任何幫助或指針在正確的方向將不勝感激。

地圖斷枝類:

public class mapFrag extends Fragment { 

MapView mMapView; 
GoogleMap googleMap; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    // inflate and return the layout 
    View v = inflater.inflate(R.layout.fragment_map, container, false); 
    mMapView = (MapView) v.findViewById(R.id.mapView); 
    mMapView.onCreate(savedInstanceState); 
    mMapView.onResume();//needed to get the map to display immediately 

    try { 
     MapsInitializer.initialize(getActivity()); 
    } catch (GooglePlayServicesNotAvailableException e) { 
     e.printStackTrace(); 
    } 

    googleMap = mMapView.getMap(); 



    //Perform any camera updates here 

    return v; 
} 

} 

佈局XML

編輯通過改變XML解決 - 見下面

<?xml version="1.0" encoding="utf-8"?> 
<com.google.android.gms.maps.MapView 

xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:id="@+id/mapView" /> 

logcat的

01-07 16:08:25.380: W/ImageView(1756):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
01-07 16:08:25.380: W/ImageView(1756): at dalvik.system.NativeStart.main(Native Method) 
01-07 16:08:25.400: D/AndroidRuntime(1756): Shutting down VM 
01-07 16:08:25.400: W/dalvikvm(1756): threadid=1: thread exiting with uncaught exception (group=0x40a5a1f8) 
01-07 16:08:25.400: E/AndroidRuntime(1756): FATAL EXCEPTION: main 
01-07 16:08:25.400: E/AndroidRuntime(1756): android.view.InflateException: Binary XML file line #3: Error inflating class com.google.android.gms.maps.mapview 
01-07 16:08:25.400: E/AndroidRuntime(1756):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:691) 
01-07 16:08:25.400: E/AndroidRuntime(1756):  at android.view.LayoutInflater.inflate(LayoutInflater.java:466) 
01-07 16:08:25.400: E/AndroidRuntime(1756):  at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
01-07 16:08:25.400: E/AndroidRuntime(1756):  at info.androidhive.slidingmenu.mapFrag.onCreateView(mapFrag.java:24) 
01-07 16:08:25.400: E/AndroidRuntime(1756):  at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:828) 
01-07 16:08:25.400: E/AndroidRuntime(1756):  at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1032) 
01-07 16:08:25.400: E/AndroidRuntime(1756):  at android.app.BackStackRecord.run(BackStackRecord.java:622) 
01-07 16:08:25.400: E/AndroidRuntime(1756):  at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1382) 
01-07 16:08:25.400: E/AndroidRuntime(1756):  at android.app.FragmentManagerImpl$1.run(FragmentManager.java:426) 
01-07 16:08:25.400: E/AndroidRuntime(1756):  at android.os.Handler.handleCallback(Handler.java:605) 
01-07 16:08:25.400: E/AndroidRuntime(1756):  at android.os.Handler.dispatchMessage(Handler.java:92) 
01-07 16:08:25.400: E/AndroidRuntime(1756):  at android.os.Looper.loop(Looper.java:137) 
01-07 16:08:25.400: E/AndroidRuntime(1756):  at android.app.ActivityThread.main(ActivityThread.java:4446) 
01-07 16:08:25.400: E/AndroidRuntime(1756):  at java.lang.reflect.Method.invokeNative(Native Method) 
01-07 16:08:25.400: E/AndroidRuntime(1756):  at java.lang.reflect.Method.invoke(Method.java:511) 
01-07 16:08:25.400: E/AndroidRuntime(1756):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
01-07 16:08:25.400: E/AndroidRuntime(1756):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
01-07 16:08:25.400: E/AndroidRuntime(1756):  at dalvik.system.NativeStart.main(Native Method) 
01-07 16:08:25.400: E/AndroidRuntime(1756): Caused by: java.lang.ClassNotFoundException: com.google.android.gms.maps.mapview 
01-07 16:08:25.400: E/AndroidRuntime(1756):  at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) 
01-07 16:08:25.400: E/AndroidRuntime(1756):  at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 
01-07 16:08:25.400: E/AndroidRuntime(1756):  at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 
01-07 16:08:25.400: E/AndroidRuntime(1756):  at android.view.LayoutInflater.createView(LayoutInflater.java:552) 
01-07 16:08:25.400: E/AndroidRuntime(1756):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680) 
01-07 16:08:25.400: E/AndroidRuntime(1756):  ... 17 more 
+1

閱讀本http://developer.android.com/reference/com/google/android /gms/maps/MapView.html – Raghunandan

+0

你正在使用Google Maps錯誤,請閱讀文檔https://developers.google.com/maps/documentation/android/ – tyczj

回答

1
Caused by: java.lang.ClassNotFoundException: com.google.android.gms.maps.mapview 

應該

<com.google.android.gms.maps.MapView 

<com.google.android.gms.maps.mapview 

你也應該閱讀

http://developer.android.com/reference/com/google/android/gms/maps/MapView.html

此類的用戶必須將包含此視圖的Activity或Fragment的所有生命週期方法轉發給此類中的相應對象。特別是,你必須在下列方法轉發:

onCreate(Bundle) 
onResume() 
onPause() 
onDestroy() 
onSaveInstanceState() 
onLowMemory() 

,你可以參考這個

Android - android.view.InflateException: Binary XML file line #8: Error inflating class fragment

+0

Raghunandan上的Spot,總是有些簡單的ey? –

+0

@ c-bradz很高興能夠認真幫助和紅色MapView文檔。你錯過了覆蓋一些方法 – Raghunandan

+1

我有生命週期方法實施,試圖節省空間,所以我把它們排除在外,因爲它不太可能出現問題。再次感謝 –

0

我沒有看到你使用任何碎片。它應該是:

<fragment xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/map" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    class="com.google.android.gms.maps.MapFragment"/> 
相關問題