I have been toiling with the Google-maps API for Android v2 for days now, and cannot figure out how to get this activity working, here is the layout file activity_main.xml:
<?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.MapFragment"/>
Here is MainActivity.java:
package com.gabe.locator;
import android.os.Bundle;
import android.app.Activity;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
And my manifest file:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.gabe.locator"
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"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<!-- 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"/>
<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="AIzaSyDW3bQEXEHW956EiLMhgvaXBQMakRa7i6E" />
<uses-sdk
android:minSdkVersion="12"
android:targetSdkVersion="18" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.gabe.locator.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>
</application>
</manifest>
here is my last error trace:
02-06 21:02:57.406: D/AndroidRuntime(29553): Shutting down VM
02-06 21:02:57.406: W/dalvikvm(29553): threadid=1: thread exiting with uncaught exception (group=0x4162a7c0)
02-06 21:02:57.416: E/AndroidRuntime(29553): FATAL EXCEPTION: main
02-06 21:02:57.416: E/AndroidRuntime(29553): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.gabe.locator/com.gabe.locator.MainActivity}: android.view.InflateException: Binary XML file line #2: Error inflating class fragment
02-06 21:02:57.416: E/AndroidRuntime(29553): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2339)
02-06 21:02:57.416: E/AndroidRuntime(29553): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2389)
02-06 21:02:57.416: E/AndroidRuntime(29553): at android.app.ActivityThread.access$600(ActivityThread.java:153)
02-06 21:02:57.416: E/AndroidRuntime(29553): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1269)
02-06 21:02:57.416: E/AndroidRuntime(29553): at android.os.Handler.dispatchMessage(Handler.java:99)
02-06 21:02:57.416: E/AndroidRuntime(29553): at android.os.Looper.loop(Looper.java:137)
02-06 21:02:57.416: E/AndroidRuntime(29553): at android.app.ActivityThread.main(ActivityThread.java:5289)
02-06 21:02:57.416: E/AndroidRuntime(29553): at java.lang.reflect.Method.invokeNative(Native Method)
02-06 21:02:57.416: E/AndroidRuntime(29553): at java.lang.reflect.Method.invoke(Method.java:525)
02-06 21:02:57.416: E/AndroidRuntime(29553): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739)
02-06 21:02:57.416: E/AndroidRuntime(29553): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555)
02-06 21:02:57.416: E/AndroidRuntime(29553): at dalvik.system.NativeStart.main(Native Method)
02-06 21:02:57.416: E/AndroidRuntime(29553): Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class fragment
02-06 21:02:57.416: E/AndroidRuntime(29553): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713)
02-06 21:02:57.416: E/AndroidRuntime(29553): at android.view.LayoutInflater.inflate(LayoutInflater.java:469)
02-06 21:02:57.416: E/AndroidRuntime(29553): at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
02-06 21:02:57.416: E/AndroidRuntime(29553): at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
02-06 21:02:57.416: E/AndroidRuntime(29553): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:320)
02-06 21:02:57.416: E/AndroidRuntime(29553): at android.app.Activity.setContentView(Activity.java:1895)
02-06 21:02:57.416: E/AndroidRuntime(29553): at com.gabe.locator.MainActivity.onCreate(MainActivity.java:12)
02-06 21:02:57.416: E/AndroidRuntime(29553): at android.app.Activity.performCreate(Activity.java:5133)
02-06 21:02:57.416: E/AndroidRuntime(29553): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
02-06 21:02:57.416: E/AndroidRuntime(29553): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2293)
02-06 21:02:57.416: E/AndroidRuntime(29553): ... 11 more
02-06 21:02:57.416: E/AndroidRuntime(29553): Caused by: java.lang.IllegalStateException: A required meta-data tag in your app's AndroidManifest.xml does not exist. You must have the following declaration within the <application> element: <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
02-06 21:02:57.416: E/AndroidRuntime(29553): at com.google.android.gms.common.GooglePlayServicesUtil.n(Unknown Source)
02-06 21:02:57.416: E/AndroidRuntime(29553): at com.google.android.gms.common.GooglePlayServicesUtil.isGooglePlayServicesAvailable(Unknown Source)
02-06 21:02:57.416: E/AndroidRuntime(29553): at com.google.android.gms.maps.internal.q.v(Unknown Source)
02-06 21:02:57.416: E/AndroidRuntime(29553): at com.google.android.gms.maps.internal.q.u(Unknown Source)
02-06 21:02:57.416: E/AndroidRuntime(29553): at com.google.android.gms.maps.MapsInitializer.initialize(Unknown Source)
02-06 21:02:57.416: E/AndroidRuntime(29553): at com.google.android.gms.maps.MapFragment$b.eb(Unknown Source)
02-06 21:02:57.416: E/AndroidRuntime(29553): at com.google.android.gms.maps.MapFragment$b.a(Unknown Source)
02-06 21:02:57.416: E/AndroidRuntime(29553): at com.google.android.gms.dynamic.a.a(Unknown Source)
02-06 21:02:57.416: E/AndroidRuntime(29553): at com.google.android.gms.dynamic.a.onInflate(Unknown Source)
02-06 21:02:57.416: E/AndroidRuntime(29553): at com.google.android.gms.maps.MapFragment.onInflate(Unknown Source)
02-06 21:02:57.416: E/AndroidRuntime(29553): at android.app.Activity.onCreateView(Activity.java:4745)
02-06 21:02:57.416: E/AndroidRuntime(29553): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:689)
02-06 21:02:57.416: E/AndroidRuntime(29553): ... 20 more
02-06 21:03:00.530: I/Process(29553): Sending signal. PID: 29553 SIG: 9
Does anyone have any idea what is causing the crash each time I run this on Cyanogenmod for HTC One S, with android 4.3.1?
Thanks! Gabe
As per Documentation
Note: The Google Maps Android API requires API level 12 or higher for the support of MapFragment objects. If you are targeting an application earlier than API level 12, you can access the same functionality through the SupportMapFragment class. You will also have to include the Android Support Library .
Add this both
<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="AIzaSyDW3bQEXEHW956EiLMhgvaXBQMakRa7i6E" />
Under <application>
tag in manifest.xml
file.
And extends
your Activity
to FragmentActivity
.
Use SupportMapFragment in layout.xml
<fragment
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.SupportMapFragment" />
Also extend as FragmentActivity and not as Activity
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.