Unable instantiate android.gms.maps.MapFragment Unable instantiate android.gms.maps.MapFragment android android

Unable instantiate android.gms.maps.MapFragment


In IntelliJ IDEA (updated for IntelliJ 12):

  1. Create a file ~/android-sdk/extras/google/google_play_services/libproject/google-play-services_lib/src/dummy.java containing class dummy {}.
  2. File->Import Module-> ~/android-sdk/extras/google/google_play_services/libproject/google-play-services_lib
  3. Create Module from Existing Sources
  4. Next->Next->Next->Next->Finish
  5. File->Project Structure->Modules->YourApp
  6. +->Module Dependency->Google-play-services_lib (The + button is in the top right corner of the dialog.)
  7. +->Jars or directories->~/android-sdk/extras/google/google_play_services/libproject/google-play-services_lib/libs/google-play-services.jar
  8. Use the up/down arrows to move <Module source> to the bottom of the list.

You can delete dummy.java if you like.

Edit: After using this for a while I've found that there is a small flaw/bug. IDEA will sometimes complain about not being able to open a .iml project file in the google-play-services_lib directory, despite the fact that you never told it there was a project there. If that happens, rebuilding the project solves the problem, at least until it comes back.


Update

Please follow Commonsware MapV2 code snippets to get better understanding.

(It is present in Omnibus edition)

https://github.com/commonsguy/cw-omnibus/tree/master/MapsV2

Following snippet is working fine at my end.I choose to use SupportMapFragment.

Dont forget to add google-play-services.jar into your project.

MainActivity.java

package com.example.newmapview;import android.os.Bundle;import android.support.v4.app.FragmentActivity;import com.google.android.gms.maps.SupportMapFragment;public class MainActivity extends FragmentActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        SupportMapFragment fragment = new SupportMapFragment();        getSupportFragmentManager().beginTransaction()                .add(android.R.id.content, fragment).commit();    }}

manifest.xml

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.example.newmapview"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk        android:minSdkVersion="8"        android:targetSdkVersion="16" />    <permission        android:name="com.example.newmapview.permission.MAPS_RECEIVE"        android:protectionLevel="signature" />    <uses-permission android:name="com.example.newmapview.permission.MAPS_RECEIVE" />    <uses-permission android:name="android.permission.INTERNET" />    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />    <application        android:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <activity            android:name="com.example.newmapview.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.maps.v2.API_KEY"            android:value="XXXXX" />    </application>    <uses-feature        android:glEsVersion="0x00020000"        android:required="true" /></manifest>

Here is the result

enter image description hereHope this will help.


Just try to replace your layout with :

<?xml version="1.0" encoding="utf-8"?><fragment xmlns:android="http://schemas.android.com/apk/res/android"      android:id="@+id/map"       android:name="com.google.android.gms.maps.SupportMapFragment"       android:layout_width="wrap_content"       android:layout_height="match_parent" />

You need to use the SupportMapFragment for API under 11 !

Aurel