4

I am trying to show GoogleMap on my Activity. I have done all necessary steps including key generation, linked google-play-services_lib, added android-support-v4.jar. But I am facing an error because of Fragment. I have tried many solutions, spent many hours but unable to solve this problem. Please help me.

MapActivity.java

package com.example.classified_android_app;

import android.os.Bundle;   
import android.support.v4.app.FragmentActivity;

public class MapActivity extends FragmentActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.map);
    }
}

map.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <fragment
        xmlns:map="http://schemas.android.com/apk/res-auto"
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="com.google.android.gms.maps.SupportMapFragment"
        map:cameraTargetLat="17.660324"
        map:cameraTargetLng="75.906601"
        map:cameraZoom="15" >
    </fragment>

</RelativeLayout>

Manifest

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.classified_android_app"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:maxSdkVersion="19"
        android:minSdkVersion="16"
        android:targetSdkVersion="19" />

    <permission
        android:name="com.example.classified_android_app.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />

    <uses-permission android:name="com.example.classified_android_app.permission.MAPS_RECEIVE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="my key" />
        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />

        <activity
            android:name=".MapActivity"
            android:label="Google Map"
            android:theme="@style/MyTheme" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Log

06-21 09:54:08.592: W/dalvikvm(13704): threadid=1: thread exiting with uncaught exception (group=0x4191d908)
06-21 09:54:08.630: E/AndroidRuntime(13704): FATAL EXCEPTION: main
06-21 09:54:08.630: E/AndroidRuntime(13704): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.classified_android_app/com.example.classified_android_app.MapActivity}: android.view.InflateException: Binary XML file line #6: Error inflating class fragment
06-21 09:54:08.630: E/AndroidRuntime(13704):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
06-21 09:54:08.630: E/AndroidRuntime(13704):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2211)
06-21 09:54:08.630: E/AndroidRuntime(13704):    at android.app.ActivityThread.access$600(ActivityThread.java:149)
06-21 09:54:08.630: E/AndroidRuntime(13704):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1300)
06-21 09:54:08.630: E/AndroidRuntime(13704):    at android.os.Handler.dispatchMessage(Handler.java:99)
06-21 09:54:08.630: E/AndroidRuntime(13704):    at android.os.Looper.loop(Looper.java:153)
06-21 09:54:08.630: E/AndroidRuntime(13704):    at android.app.ActivityThread.main(ActivityThread.java:4987)
06-21 09:54:08.630: E/AndroidRuntime(13704):    at java.lang.reflect.Method.invokeNative(Native Method)
06-21 09:54:08.630: E/AndroidRuntime(13704):    at java.lang.reflect.Method.invoke(Method.java:511)
06-21 09:54:08.630: E/AndroidRuntime(13704):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:821)
06-21 09:54:08.630: E/AndroidRuntime(13704):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
06-21 09:54:08.630: E/AndroidRuntime(13704):    at dalvik.system.NativeStart.main(Native Method)
06-21 09:54:08.630: E/AndroidRuntime(13704): Caused by: android.view.InflateException: Binary XML file line #6: Error inflating class fragment
06-21 09:54:08.630: E/AndroidRuntime(13704):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
06-21 09:54:08.630: E/AndroidRuntime(13704):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
06-21 09:54:08.630: E/AndroidRuntime(13704):    at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
06-21 09:54:08.630: E/AndroidRuntime(13704):    at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
06-21 09:54:08.630: E/AndroidRuntime(13704):    at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
2
  • Are you using Eclipse? Commented Jun 21, 2015 at 5:18
  • Your android:minSdkVersion="16" so you should use MapFragment Commented Jun 21, 2015 at 6:47

3 Answers 3

3

The main issue is your android:minSdkVersion="16"

What original docs said is

If your android:minSdkVersion > 12 then you should use MapFragment with extends Activity

And

If yourandroid:minSdkVersion < 12 then you should use SupportMapFragment with extends FragmentActivity

Sign up to request clarification or add additional context in comments.

Comments

0

Try to replace

<fragment
        xmlns:map="http://schemas.android.com/apk/res-auto"
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="com.google.android.gms.maps.SupportMapFragment"
        map:cameraTargetLat="17.660324"
        map:cameraTargetLng="75.906601"
        map:cameraZoom="15" >
    </fragment>

with

<fragment
        xmlns:map="http://schemas.android.com/apk/res-auto"
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
         android:name="com.google.android.gms.maps.SupportMapFragment"
        map:cameraTargetLat="17.660324"
        map:cameraTargetLng="75.906601"
        map:cameraZoom="15" >
    </fragment>

See this link provided by android official website How to add static fragment from XML

1 Comment

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.classified_android_app/com.example.classified_android_app.MapActivity}: android.view.InflateException: Binary XML file line #6: Error inflating class fragment
0

Try adding this to your onCreate().

       SupportMapFragment mapFragment =
                (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);

and replace this.

<fragment
        xmlns:map="http://schemas.android.com/apk/res-auto"
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="com.google.android.gms.maps.SupportMapFragment"
        map:cameraTargetLat="17.660324"
        map:cameraTargetLng="75.906601"
        map:cameraZoom="15" >
    </fragment>

with

<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.SupportMapFragment" />
        map:cameraTargetLat="17.660324"
        map:cameraTargetLng="75.906601"
        map:cameraZoom="15" >
    </fragment>

2 Comments

When I add xmlns:android="schemas.android.com/apk/res/android" in fragment, then it is showing this error - Unexpected namespace prefix "xmlns" found for tag fragment
Should work the way you had that as long as you add the SupportMapFragment to your onCreate()

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.