Imposible instanciar android.gms.maps.MapFragment

Intento hacer una demostración con google maps android v2 con una actividad muy simple, solo copie el código de la página de google: https://developers.google.com/maps/documentation/android/start#adding_the_api_key_to_your_application

para la actividad:

package com.example.mapdemo; 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.main); } } 

para el diseño:

   

Solicité una clave api según la página y modifiqué mi archivo androidmanifest.xml, como este:

                      

También hago referencia a mi aplicación en google-play-services_lib en eclipse.

pero cada vez, informe de error en logcat de esta manera:

 2-05 16:22:53.609: E/AndroidRuntime(21623): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.wenhai.driverschool/com.wenhai.driverschool.MainActivity}: android.view.InflateException: Binary XML file line #2: Error inflating class fragment 12-05 16:22:53.609: E/AndroidRuntime(21623): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1967) 12-05 16:22:53.609: E/AndroidRuntime(21623): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1992) 12-05 16:22:53.609: E/AndroidRuntime(21623): at android.app.ActivityThread.access$600(ActivityThread.java:127) 12-05 16:22:53.609: E/AndroidRuntime(21623): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1158) 12-05 16:22:53.609: E/AndroidRuntime(21623): at android.os.Handler.dispatchMessage(Handler.java:99) 12-05 16:22:53.609: E/AndroidRuntime(21623): at android.os.Looper.loop(Looper.java:137) 12-05 16:22:53.609: E/AndroidRuntime(21623): at android.app.ActivityThread.main(ActivityThread.java:4441) 12-05 16:22:53.609: E/AndroidRuntime(21623): at java.lang.reflect.Method.invokeNative(Native Method) 12-05 16:22:53.609: E/AndroidRuntime(21623): at java.lang.reflect.Method.invoke(Method.java:511) 12-05 16:22:53.609: E/AndroidRuntime(21623): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:823) 12-05 16:22:53.609: E/AndroidRuntime(21623): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:590) 12-05 16:22:53.609: E/AndroidRuntime(21623): at dalvik.system.NativeStart.main(Native Method) 12-05 16:22:53.609: E/AndroidRuntime(21623): Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class fragment 12-05 16:22:53.609: E/AndroidRuntime(21623): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:697) 12-05 16:22:53.609: E/AndroidRuntime(21623): at android.view.LayoutInflater.inflate(LayoutInflater.java:466) 12-05 16:22:53.609: E/AndroidRuntime(21623): at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 12-05 16:22:53.609: E/AndroidRuntime(21623): at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 12-05 16:22:53.609: E/AndroidRuntime(21623): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:255) 12-05 16:22:53.609: E/AndroidRuntime(21623): at android.app.Activity.setContentView(Activity.java:1835) 12-05 16:22:53.609: E/AndroidRuntime(21623): at com.wenhai.driverschool.MainActivity.onCreate(MainActivity.java:11) 12-05 16:22:53.609: E/AndroidRuntime(21623): at android.app.Activity.performCreate(Activity.java:4465) 12-05 16:22:53.609: E/AndroidRuntime(21623): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 12-05 16:22:53.609: E/AndroidRuntime(21623): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1931) 12-05 16:22:53.609: E/AndroidRuntime(21623): ... 11 more 12-05 16:22:53.609: E/AndroidRuntime(21623): 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 12-05 16:22:53.609: E/AndroidRuntime(21623): at android.app.Fragment.instantiate(Fragment.java:581) 12-05 16:22:53.609: E/AndroidRuntime(21623): at android.app.Fragment.instantiate(Fragment.java:549) 12-05 16:22:53.609: E/AndroidRuntime(21623): at android.app.Activity.onCreateView(Activity.java:4235) 12-05 16:22:53.609: E/AndroidRuntime(21623): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:673) 12-05 16:22:53.609: E/AndroidRuntime(21623): ... 20 more 12-05 16:22:53.609: E/AndroidRuntime(21623): Caused by: java.lang.ClassNotFoundException: com.google.android.gms.maps.MapFragment 12-05 16:22:53.609: E/AndroidRuntime(21623): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) 12-05 16:22:53.609: E/AndroidRuntime(21623): at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 12-05 16:22:53.609: E/AndroidRuntime(21623): at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 12-05 16:22:53.609: E/AndroidRuntime(21623): at android.app.Fragment.instantiate(Fragment.java:571) 12-05 16:22:53.609: E/AndroidRuntime(21623): ... 23 more 

No sé el motivo de esto.

Si agrego google-play-services.jar a mi proyecto, se generará otro error:

 12-05 16:34:23.269: E/AndroidRuntime(22638): FATAL EXCEPTION: main 12-05 16:34:23.269: E/AndroidRuntime(22638): java.lang.NoClassDefFoundError: com.google.android.gms.R$styleable 12-05 16:34:23.269: E/AndroidRuntime(22638): at com.google.android.gms.maps.GoogleMapOptions.createFromAttributes(Unknown Source) 12-05 16:34:23.269: E/AndroidRuntime(22638): at com.google.android.gms.maps.MapFragment.onInflate(Unknown Source) 12-05 16:34:23.269: E/AndroidRuntime(22638): at android.app.Activity.onCreateView(Activity.java:4242) 12-05 16:34:23.269: E/AndroidRuntime(22638): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:673) 12-05 16:34:23.269: E/AndroidRuntime(22638): at android.view.LayoutInflater.inflate(LayoutInflater.java:466) 12-05 16:34:23.269: E/AndroidRuntime(22638): at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 12-05 16:34:23.269: E/AndroidRuntime(22638): at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 12-05 16:34:23.269: E/AndroidRuntime(22638): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:255) 12-05 16:34:23.269: E/AndroidRuntime(22638): at android.app.Activity.setContentView(Activity.java:1835) 12-05 16:34:23.269: E/AndroidRuntime(22638): at com.wenhai.driverschool.MainActivity.onCreate(MainActivity.java:11) 12-05 16:34:23.269: E/AndroidRuntime(22638): at android.app.Activity.performCreate(Activity.java:4465) 12-05 16:34:23.269: E/AndroidRuntime(22638): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 12-05 16:34:23.269: E/AndroidRuntime(22638): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1931) 12-05 16:34:23.269: E/AndroidRuntime(22638): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1992) 12-05 16:34:23.269: E/AndroidRuntime(22638): at android.app.ActivityThread.access$600(ActivityThread.java:127) 12-05 16:34:23.269: E/AndroidRuntime(22638): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1158) 12-05 16:34:23.269: E/AndroidRuntime(22638): at android.os.Handler.dispatchMessage(Handler.java:99) 12-05 16:34:23.269: E/AndroidRuntime(22638): at android.os.Looper.loop(Looper.java:137) 12-05 16:34:23.269: E/AndroidRuntime(22638): at android.app.ActivityThread.main(ActivityThread.java:4441) 12-05 16:34:23.269: E/AndroidRuntime(22638): at java.lang.reflect.Method.invokeNative(Native Method) 12-05 16:34:23.269: E/AndroidRuntime(22638): at java.lang.reflect.Method.invoke(Method.java:511) 12-05 16:34:23.269: E/AndroidRuntime(22638): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:823) 12-05 16:34:23.269: E/AndroidRuntime(22638): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:590) 12-05 16:34:23.269: E/AndroidRuntime(22638): at dalvik.system.NativeStart.main(Native Method) 

¿Alguien puede ayudarme sobre esto?

En IntelliJ IDEA (actualizado para IntelliJ 12):

  1. Cree un archivo ~/android-sdk/extras/google/google_play_services/libproject/google-play-services_lib/src/dummy.java contenga la class dummy {} .
  2. Archivo-> Importar módulo-> ~/android-sdk/extras/google/google_play_services/libproject/google-play-services_lib
  3. Crear un módulo a partir de fonts existentes
  4. Siguiente-> Siguiente-> Siguiente-> Siguiente-> Finalizar
  5. Archivo-> Estructura del proyecto-> Módulos-> YourApp
  6. + -> Módulo Dependencia-> Google-play-services_lib (El botón + se encuentra en la esquina superior derecha del cuadro de diálogo).
  7. + -> Frascos o directorios-> ~/android-sdk/extras/google/google_play_services/libproject/google-play-services_lib/libs/google-play-services.jar
  8. Use las flechas arriba / abajo para mover al final de la lista.

Puede eliminar dummy.java si lo desea.

Editar: Después de usar esto por un tiempo, he descubierto que hay un pequeño error / error. IDEA a veces se queja de no poder abrir un archivo de proyecto .iml en el directorio google-play-services_lib , a pesar de que nunca le contó que había un proyecto allí. Si eso sucede, la reconstrucción del proyecto resuelve el problema, al menos hasta que vuelva.

Actualizar

Siga los fragmentos de código de Commonsware MapV2 para comprender mejor.

(Está presente en la edición Omnibus)

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

El siguiente fragmento está funcionando bien en mi extremo. Elijo usar SupportMapFragment .

No olvides agregar google-play-services.jar en tu proyecto.

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

                      

Aquí está el resultado

enter image description here Espero que esto ayude

Solo intenta reemplazar tu diseño con:

   

¡Necesita utilizar el SupportMapFragment para API bajo 11!

Aurel

Enfrenté el mismo problema y me llevó dos días encontrar una solución que funcionara para mí:

  1. Eliminar el proyecto google-play-services_lib (hacer clic con el botón derecho en la eliminación del proyecto)
  2. Eliminar el proyecto que contiene la demo de Google maps ( MainActivity en mi caso) si tiene uno
  3. Copie el proyecto google-play-services_lib (extras \ google \ google_play_services \ libproject \ google-play-services_lib) en su espacio de trabajo y luego impórtelo como proyecto general (Archivo-> importar-> proyectos existentes en workspase)
  4. Haga clic derecho en su proyecto (en el que desea cargar el mapa) -> Android -> agregar (en la biblioteca) google-play-services_lib

Debería ver algo como esto :

Observe la

Nota: No debe tener algo como esto (el proyecto debe remitirse desde su área de trabajo):

enter image description here

Creo que el problema es que los proyectos de tow están haciendo referencia a la misma biblioteca

prueba esto

http://developer.android.com/tools/projects/projects-eclipse.html#ReferencingLibraryProject

Acabo de agregar el proyecto de servicios de google y agregué una referencia en la propiedad de mi proyecto-> Android

  1. Por ahora, la demostración puede funcionar siguiendo este enlace :
  2. Por ejemplo, demostración, también puede funcionar:

Agregue dos jar en el directorio libs de su proyecto. Sigue la información a continuación. En particular, creo que debes:

  • Importe la fuente real del proyecto “google-play-services_lib” y vincúlela como una biblioteca de Android.
    • Haga esto a través de Proyecto -> Propiedades -> Android -> Biblioteca, Agregar -> google-play-services_lib (puede hacer clic con el botón derecho en su proyecto y seleccionar Propiedades, luego seleccionar Android).
    • No lo agregue como un Proyecto dependiente a través de la “Ruta de comstackción de Java” para su proyecto, eso no funcionó para mí.
  • Agregue google-play-services.jar y android-support-v4.jar en una carpeta “libs” en el proyecto de ejemplo y agréguelos como “JAR externos externos” en “Build Path -> Configure Build Path -> Libraries” .

Descubrí que este segundo paso era necesario ya que estaba alcanzando el mismo error exacto que cuando intentas usar el código de muestra. El primer paso fue necesario para evitar un NoClassDefFoundError en com.google.android.gms.R $ styleable en mi proyecto real.

También tuve que hacer una comstackción limpia y desinstalar la aplicación del dispositivo (desde un bash de prueba anterior) antes de que el código de muestra funcionara.

Muchas gracias tu ayuda.

Tal vez debes destacar esto:

Nota: los servicios de Google Play no son compatibles con el emulador de Android: para desarrollar usando las API, debe proporcionar un dispositivo de desarrollo como un teléfono o tableta Android.

http://developer.android.com/google/play-services/setup.html

Debe proporcionar un dispositivo de desarrollo físico en el que pueda ejecutar y depurar su aplicación. No uses emulador. No funciona

En su MainActivity (o en cada actividad que desee colocar en el mapa v2), debe extender FragmentActivity o Activity o bien desea utilizar SupportMapFragment o simplemente MapFragment . Use la clase MapFragment solo si está apuntando a API 12 y superior. De lo contrario, use SupportMapFragment . Es una diferencia sutil, pero comete el error.

Como el mapa de Google ahora está envuelto en Fragmentos, amplíe su actividad desde FragmetActivity no solo Actividad y asegúrese de que si usa ” supporrtMapFragment “, entonces está importando Fragment del paquete de soporte solamente.

En mi proyecto Intellij Idea, tuve que agregar ambos: google-play-services_lib y google-play-services.jar al proyecto. Y en el proyecto google-play-services_lib agrega google-play-services.jar también. Después de eso, si hiciste todas las cosas, eso se describe aquí , correcto, tu aplicación debería estar funcionando.

Fue un poco difícil porque era diferente en la API anterior, pero encontré una solución. Google dice qué hacer aquí ; de acuerdo con la pregunta, necesitamos las clases com.google.android.gms , por lo que es necesario configurar los google play services , que es solo una biblioteca que tenemos que agregar a nuestro proyecto como este enlace . Es muy importante importar la copia de la biblioteca del proyecto google-play-services_lib no la que está en la carpeta sdk. Una vez hecho esto, el tutorial de Google funciona a la perfección.

Además de muchas de las cosas mencionadas anteriormente, para mí era importante marcar el .jar también en Order and Export. Por lo que puedo decir, generalmente no se menciona y para mí fue crucial.

Marque la lib en orden y exportación

se relacionan con esta sugerencia: https://stackoverflow.com/a/20215481/3080835

también tuve que agregar esto al elemento Application en el Manifiesto:

  

y funcionó a la perfección.

Agregue esta dependencia en build.gradle

compile 'com.google.android.gms:play-services:6.5.87

Ahora esto funciona

     

Para encargarse de las importaciones relacionadas con Drive, necesitará algunos botes del Google Drive SDK . Hay algunos pocos grandes, por lo que es posible que desee agregarlos individualmente para adaptarse a su aplicación.

Si eso no resuelve las com.google.android.gms.* imports , Se the Google Play Services add-on needs to be installed (from Extras -> Google Play Services in the SDK Manager) and google-play-services.jar needs to be added to your build path.

EDITAR:

En este caso, se necesitaron los siguientes flasks:

google-api-services-drive-v2-rev1-1.7.2-beta.jar

google-http-client-1.10.3-beta.jar

google-http-client-android2-1.10.3-beta.jar

google-oauth-client-1.10.1-beta.jar

google-api-client-android2-1.10.3-beta.jar

google-api-client-1.10.3-beta.jar

Tuve el mismo problema en mi LG-E730 con Android 2.3.4. El error aparece antes de actualizar el servicio Google Play en mi teléfono.

¡No te olvides de construir el google-play-services_lib! Es por eso que muestra el mensaje “No se pudo encontrar google-play …. apk”. Para mí, en Eclipse, no se necesitaban otros hacks, sino para hacer referencia al proyecto desde el submenú de Android, no desde la ruta de comstackción de Java, las referencias de proyectos o cualquier otra cosa. No había flasks colocados manualmente, en realidad no se necesitaba nada para mí.

En Eclipse, es necesario crear un proyecto separado para los servicios de google play y hacer referencia a él como una lib de su proyecto de Android en lugar de simplemente agregarle el jar. En mi computadora, importé el proyecto Eclipse de los servicios de Google Play directamente desde D: \ adt-bundle-windows-x86-20130219 \ sdk \ extras \ google \ google_play_services \ libproject \ google-play-services_lib y lo configuré en el proyecto Lib, así que podría hacer referencia desde mi proyecto de Android.

Se afirma en el mismo tutorial que

Tenga en cuenta que el siguiente código solo es útil para probar su configuración en una aplicación que apunta a Android API 12 o posterior

Simplemente cambie su versión min SDK a 12 y funcionará

  

Haven ya probó la solución de Aurel para versiones anteriores de la API.

Creo que vale la pena mencionar (después de pasar más de una hora sacándome el pelo) que si está utilizando MapFragment no puede usar FragmentActivity (SupportMapFragment funcionará bien en este entorno). Estaba a punto de darme por vencido.

Primer paso http://developer.android.com/tools/projects/projects-eclipse.html#ReferencingLibraryProject Segundo paso http://developer.android.com/google/play-services/setup.html En esa página tiene una NOTA, pero no prestamos atención

Nota: Debería hacer referencia a una copia de la biblioteca que copió en su árbol de fonts; no debe hacer referencia a la biblioteca desde el directorio SDK de Android.

Pero creo que no es una buena forma de documentación 🙂

Esto podría ser de ayuda para algunos. Tenía dos proyectos, uno que era una copia de la demostración de Google y que funcionó bien. Otro copié en un proyecto existente y no pude ejecutarlo. Y en el segundo fallo recibí el mensaje de error descrito anteriormente.

Mi problema se debió a una biblioteca no habilitada, aunque reconstruí, importé varias veces, etc. Haga clic derecho en el proyecto -> Propiedades -> Ruta de comstackción de Java -> pestaña Orden y exportación. En el proyecto anómalo, la pestaña “Librerías privadas de Android” no estaba marcada.

Una vez que lo habilité, el proyecto funcionó bien.

Tenía todo lo que decían todos y resolví el error simplemente llamando al super.onCreate(savedInstanceState); como primera instrucción en el método oncreate; antes de que fuera la última línea en el método. : | perdido todo el día.

Tengo este problema. Acabo de actualizar los servicios de Google Play y me aseguro de que está agregando el proyecto google-play-service-lib como dependencia. Está funcionando ahora sin ningún cambio de código, pero sigo recibiendo “No se encontraron los recursos de los servicios de Google Play”. . Verifique la configuración de su proyecto para asegurarse de que los recursos estén incluidos “. pero esto solo ocurre cuando tienes setMyLocationEnabled (verdadero), ¿alguien sabe por qué?

No entiendo la verdadera solución pero la resuelvo después de hacer estas cosas:
– Marque ‘Copiar proyectos en el espacio de trabajo’ al importar google-play-services_lib
– No configure minSdkVersion debajo de 13
– Si obtiene un error con el tema, intente cambiar su tema de diseño a cualquier tema del sistema
– Volver a crear su proyecto desde cero o revertir todo si lo obtiene de algún lugar

Tengo el mismo problema y solo instalé Play Services de SDK y todos los problemas salieron volando.

Escribí en la actividad
import com.google.android.gms.maps.SupportMapFragment;

y Eclipse me dio el ícono rojo> clic> arreglar configuración de proyecto …> agregar archivo google-play-services.jar

¡Y finalmente funcionó!

Agregue servicios de Google Play a su proyecto

Para que las API de servicios de Google Play estén disponibles para tu aplicación:

Sigue los pasos que se muestran en este enlace: http://developer.android.com/google/play-services/setup.html#Setup

Enfrenté este problema al usar Android SDK para x86 en una máquina con Windows 7 de 64 bits. Descargué la versión de Android SDK de 64 bits, hice que Eclipse lo viera en la ventana> Preferencias> Android> ubicación del SDK y el problema se detuvo.

Por favor lea cuidadosamente

Si todo funciona igual que el código de Google, compruebe el archivo de manifiesto en mi caso, agregué la clave geográfica y la clave del mapa, por eso ocurre una excepción.

Nota: no agregue dos claves en el archivo de manifiesto, elimine la clave del mapa

 meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="@string/google_maps_key"/> 

agregue este código