【问题标题】:Android app crashing when trying to load Google Maps V2尝试加载 Google Maps V2 时 Android 应用程序崩溃
【发布时间】:2014-01-07 16:26:12
【问题描述】:

我正在尝试在我的 Android 应用程序中实现 Google Maps V2,同时使用 Fragments。

代码没有显示错误,但是当我尝试查看地图时,它崩溃了。

我已经被这个问题困扰了一段时间,所以任何帮助或正确方向的指示将不胜感激。

地图碎片类:

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 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">
</com.google.android.gms.maps.mapview>

日志猫

 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

【问题讨论】:

标签: android google-maps fragment


【解决方案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

【讨论】:

  • 在 Raghunandan 上的位置,总是很简单吗?
  • @c-bradz 很高兴能提供帮助并仔细修改 MapView 文档。您缺少覆盖某些方法
  • 我实现了生命周期方法,试图节省空间,所以我把它们排除在外,因为问题不太可能存在。再次感谢
【解决方案2】:

我没有看到你使用任何片段。应该是:

<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"/>

【讨论】:

    猜你喜欢
    • 2013-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-07
    • 1970-01-01
    • 2013-02-17
    • 1970-01-01
    相关资源
    最近更新 更多