I'm trying to do the example here https://developers.google.com/maps/documentation/android/start
I'm working in Eclipse and there are no errors displayed in the code. I have linked the google-play-services-lib and set the project build target as the most recent version of the Google API. I've entered my API key and have turned on the google maps android api v2 in the services menu in the console. Any ideas why I'm getting this error? I'm testing on a real device, a nexus 5 running lollipop (5.0.1)
My logcat is below
FATAL EXCEPTION: main
02-23 17:47:48.927: E/AndroidRuntime(8735): Process: com.juliette.basicgooglemap, PID: 8735
02-23 17:47:48.927: E/AndroidRuntime(8735): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.juliette.basicgooglemap/com.juliette.basicgooglemap.MainActivity}: android.view.InflateException: Binary XML file line #2: Error inflating class fragment
02-23 17:47:48.927: E/AndroidRuntime(8735): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
02-23 17:47:48.927: E/AndroidRuntime(8735): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
02-23 17:47:48.927: E/AndroidRuntime(8735): at android.app.ActivityThread.access$800(ActivityThread.java:144)
02-23 17:47:48.927: E/AndroidRuntime(8735): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
02-23 17:47:48.927: E/AndroidRuntime(8735): at android.os.Handler.dispatchMessage(Handler.java:102)
02-23 17:47:48.927: E/AndroidRuntime(8735): at android.os.Looper.loop(Looper.java:135)
02-23 17:47:48.927: E/AndroidRuntime(8735): at android.app.ActivityThread.main(ActivityThread.java:5221)
02-23 17:47:48.927: E/AndroidRuntime(8735): at java.lang.reflect.Method.invoke(Native Method)
02-23 17:47:48.927: E/AndroidRuntime(8735): at java.lang.reflect.Method.invoke(Method.java:372)
02-23 17:47:48.927: E/AndroidRuntime(8735): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
02-23 17:47:48.927: E/AndroidRuntime(8735): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
02-23 17:47:48.927: E/AndroidRuntime(8735): Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class fragment
02-23 17:47:48.927: E/AndroidRuntime(8735): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:763)
02-23 17:47:48.927: E/AndroidRuntime(8735): at android.view.LayoutInflater.inflate(LayoutInflater.java:482)
02-23 17:47:48.927: E/AndroidRuntime(8735): at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
02-23 17:47:48.927: E/AndroidRuntime(8735): at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
02-23 17:47:48.927: E/AndroidRuntime(8735): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:377)
02-23 17:47:48.927: E/AndroidRuntime(8735): at android.app.Activity.setContentView(Activity.java:2144)
02-23 17:47:48.927: E/AndroidRuntime(8735): at com.juliette.basicgooglemap.MainActivity.onCreate(MainActivity.java:11)
02-23 17:47:48.927: E/AndroidRuntime(8735): at android.app.Activity.performCreate(Activity.java:5933)
02-23 17:47:48.927: E/AndroidRuntime(8735): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
02-23 17:47:48.927: E/AndroidRuntime(8735): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
02-23 17:47:48.927: E/AndroidRuntime(8735): ... 10 more
02-23 17:47:48.927: E/AndroidRuntime(8735): Caused by: android.app.Fragment$InstantiationException: Unable to instantiate fragment com.google.android.gms.maps.MapFragment: make sure class name exists, is public, and has an empty constructor that is public
02-23 17:47:48.927: E/AndroidRuntime(8735): at android.app.Fragment.instantiate(Fragment.java:618)
02-23 17:47:48.927: E/AndroidRuntime(8735): at android.app.Fragment.instantiate(Fragment.java:582)
02-23 17:47:48.927: E/AndroidRuntime(8735): at android.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2108)
02-23 17:47:48.927: E/AndroidRuntime(8735): at android.app.Activity.onCreateView(Activity.java:5282)
02-23 17:47:48.927: E/AndroidRuntime(8735): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:733)
02-23 17:47:48.927: E/AndroidRuntime(8735): ... 19 more
02-23 17:47:48.927: E/AndroidRuntime(8735): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.maps.MapFragment" on path: DexPathList[[zip file "/data/app/com.juliette.basicgooglemap-2/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
02-23 17:47:48.927: E/AndroidRuntime(8735): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
02-23 17:47:48.927: E/AndroidRuntime(8735): at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
02-23 17:47:48.927: E/AndroidRuntime(8735): at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
02-23 17:47:48.927: E/AndroidRuntime(8735): at android.app.Fragment.instantiate(Fragment.java:604)
02-23 17:47:48.927: E/AndroidRuntime(8735): ... 23 more
02-23 17:47:48.927: E/AndroidRuntime(8735): Suppressed: java.lang.ClassNotFoundException: com.google.android.gms.maps.MapFragment
02-23 17:47:48.927: E/AndroidRuntime(8735): at java.lang.Class.classForName(Native Method)
02-23 17:47:48.927: E/AndroidRuntime(8735): at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
02-23 17:47:48.927: E/AndroidRuntime(8735): at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
02-23 17:47:48.927: E/AndroidRuntime(8735): at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
02-23 17:47:48.927: E/AndroidRuntime(8735): ... 25 more
02-23 17:47:48.927: E/AndroidRuntime(8735): Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available
Here's the manifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.juliette.basicgooglemap"
android:versionCode="1"
android:versionName="1.0" >
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!-- The following two permissions are not required to use
Google Maps Android API v2, but are recommended. -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-feature
android:glEsVersion="0x00020000"
android:required="true"/>
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="21" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="API_KEY"/>
<uses-library android:name="com.google.android.maps" />
</application>
</manifest>
Here's my main activity
package com.juliette.basicgooglemap;
import android.app.Activity;
import android.os.Bundle;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
and the layout
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="com.google.android.gms.maps.SupportMapFragment"/>
Any suggestions are greatly appreciated, I'm very confused.