尝试加载Google地图V2时Android应用崩溃[解决!]
我试图在使用分段的同时在我的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
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上的Spot,总是有些简单的ey? –
@ c-bradz很高兴能够认真帮助和红色MapView文档。你错过了覆盖一些方法 – Raghunandan
我有生命周期方法实施,试图节省空间,所以我把它们排除在外,因为它不太可能出现问题。再次感谢 –
我没有看到你使用任何碎片。它应该是:
<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"/>
阅读本http://developer.android.com/reference/com/google/android /gms/maps/MapView.html – Raghunandan
你正在使用Google Maps错误,请阅读文档https://developers.google.com/maps/documentation/android/ – tyczj