studio programacion herramientas fundamentos con avanzado aplicaciones android google-maps-android-api-2

programacion - manual de android en pdf



Google Maps V2-Error al inflar Fragmento de clase (14)

¡Tengo el mismo código / el mismo problema! Prueba agregar android: name = "com.testing.svma.MainActivity" a "fragmento" en el diseño. Me solucionó el problema

<?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" class="com.google.android.gms.maps.SupportMapFragment" android:name="com.testing.svma.MainActivity"/>

Estoy probando mi mano y el desarrollo de aplicaciones de Android. Actualmente estoy usando Eclipse (no recuerdo la versión, cualquiera que sea la más nueva). He cruzado un puente donde parece que no puedo entender lo que estoy haciendo mal. Estoy intentando usar la API de Google Maps V2. He revisado varios documentos y he probado varias técnicas, todas las cuales conducen al mismo error:

Android.view.Inflate Exception: Binary XML file line #2: Error inflating class fragment

He estado golpeando mi cara en las teclas durante 2 días seguidos tratando de comprender lo que estoy haciendo mal aquí.

Cosas que he hecho:

  1. Comenzó con una actividad en blanco.
  2. Proyecto -> Propiedades -> Android -> Project Build Target es Google APIs - 4.2 - API 17 - He intentado todas las demás opciones (siempre y cuando esté arriba de la versión 3.0, encontré documentado
  3. Se agregó google-play-services_lib a mi Package Explorer. Indiqué que google-play-services_lib era a library .
  4. Proyecto -> Propiedades -> Android -> Biblioteca -> Agregar -> y elijo la ubicación en google-play-services_lib.
  5. Incluido android-support-v4.jar como una dependencia de mi proyecto.

He intentado tantas respuestas diferentes a partir de preguntas similares a las mías, pero fue en vano. :( Normalmente puedo resolver estas cosas, pero tal vez estoy demasiado sobrecargado.

Mi árbol explorador de paquetes en eclipse se ve como

  1. google-play-services_lib
  2. Svma

Aquí está el código:>

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" class="com.google.android.gms.maps.SupportMapFragment"/>

Manifiesto

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.testing.svma" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="17" android:targetSdkVersion="17" /> <permission android:name="com.testing.svma.permission.MAPS_RECEIVE" android:protectionLevel="signature" /> <uses-permission android:name="com.testing.svma.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.testing.svma.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="SHA1_Generated_KEY_HERE" /> </application> <uses-feature android:glEsVersion="0x00020000" android:required="true" /> </manifest>

MainActivity.java

package com.testing.svma; import android.os.Bundle; import android.support.v4.app.FragmentActivity; public class MainActivity extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } }

Documentos de referencia

  1. Utilicé "Error al inflar el fragmento de clase" con el mapa de google para intentar solucionar mis problemas.

  2. Hice referencia a esta guía de inicio rápido de google maps para crear mi proyecto.

  3. Inicialmente comencé con el código de muestra de la Introducción a Google Maps Android V2 Api.

  4. Una gran cantidad de preguntas SO.

Entonces, SO Community, ¿qué estoy haciendo mal? ¿Por qué soy incapaz de comprender este concepto simple?

Gracias de antemano.


Con frecuencia, el problema está en Manifest.xml , así que asegúrese de escribir los permisos correctos, como: `

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.zako.android.locationapi.maps" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="17" android:targetSdkVersion="17" /> <permission android:name="com.zako.android.locationapi.maps.permission.MAPS_RECEIVE" android:protectionLevel="signature" /> <!-- Required OpenGL ES 2.0. for Maps V2 --> <uses-feature android:glEsVersion="0x00020000" android:required="true" /> <!-- Requires OpenGL ES version 2 --> <uses-feature android:glEsVersion="0x00020000" android:required="true" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="com.zako.android.locationapi.maps.permission.MAPS_RECEIVE" /> <uses-permission android:name="android.permission.INTERNET" /> <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" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.zako.android.locationapi.maps.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="......" /> <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> </application> </manifest>

`

no olvide <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> y <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />


En algunos de los dispositivos móviles con Android 6.0, esta excepción es un error. Si no se puede XML causa plana por

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method ''android.content.res.Configuration android.content.res.Resources.getConfiguration()'' on a null object reference

Entonces es un error activo en Android https://issuetracker.google.com/issues/35827842

Esto se puede resolver agregando

android:hardwareAccelerated="true" adding in activity tag


Había intentado todas las respuestas anteriores en un período de un par de días y luego funcionó:

Proyecto -> Propiedades -> Android -> Proyecto Build Target

Se modificó el objetivo de compilación del proyecto a Android 4.3 (API 18) y se hizo clic en Aplicar

En el manifiesto, cambié manualmente las versiones sdk mínimas y de destino:

<uses-sdk android:minSdkVersion="18" android:targetSdkVersion="18" />

Esto ahora coincide con target=android-18 en el archivo project.properties (que resultó del cambio de objetivo de compilación del proyecto que hicimos primero)

También probé con android:minSdkVersion="11" que funcionó, por lo que targetSdkVersion es el bit más importante.

¡Espero que esto ayude a alguien!


Intenta agregar la referencia de biblioteca de google-play-services a tu proyecto. Si está utilizando Eclipse, debe ir a Project->Properties->Android y Add proyecto de biblioteca google-play-services.

ALTERNATIVAMENTE,

Puede modificar el archivo project.properties manualmente. Intenta agregar una referencia a tu biblioteca google_play_services. Entonces mi archivo project.properties ve así:

# Project target. target=android-17 android.library.reference.1=../../../android-sdks/extras/google/google_play_services/libproject/google-play-services_lib

En su caso, la ruta de acceso a google-play-services lib puede ser diferente

Traté de importar tu código y se bloqueó también. Cuando modifiqué el archivo de propiedades, ejecuté el mapa


Paso mucho tiempo tratando de resolver este problema y después de leer mucho e intentarlo, lo resolví cambiando el

public class MainActivity extends FragmentActivity

para esto

public class MainActivity extends android.support.v4.app.FragmentActivity

espero que esto pueda ayudarte


Sé que esto probablemente sea un hilo muerto, pero en caso de que alguien se tropiece con un problema idéntico, es posible que su manifiesto no contenga la siguiente metainformación:

<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />

Declararlo dentro del elemento <application> y su código debería funcionar. Me encontré con el mismo problema después de un tutorial de youtube que omitió este paso y solo cuando revisé cuidadosamente el tutorial original de Google noté que faltaba el código.

De todos modos, espero que esto ayude a alguien.


Simplemente incluya la siguiente línea de código en onDestroy()

SupportMapFragment mapFragment = ((SupportMapFragment) getActivity().getSupportFragmentManager().findFragmentById(R.id.map_location_sharing)); if(mapFragment != null) { FragmentManager fM = getFragmentManager(); fM.beginTransaction().remove(mapFragment).commit();

A mí me funcionó. Voy a trabajar para ti también. Gracias


Tengo un problema similar que resolví al hacer clic con el botón project->tools>add support library ... y setup library

Espero que esto te ayude


Tuve el mismo problema y cometí el error de agregar solo una de las 2 etiquetas siguientes.

El error real es realmente engañoso, ya que podría estar pensando en algún problema de interfaz de usuario de nivel API.

<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="<YOUR VALUE>"/> <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />

Tenga en cuenta que también le falta uno de estos dos


Tuve el mismo problema, lo resolví modificando el Manifiesto. Este es mi manifiesto.

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="example.gps" android:versionCode="1" android:versionName="1.0" > <permission android:name="example.gps.permission.MAPS_RECEIVE" android:protectionLevel="signature"></permission> <!-- Copied from Google Maps Library/AndroidManifest.xml. --> <uses-sdk android:minSdkVersion="9" android:targetSdkVersion="17"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> <!-- External storage for caching. --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <!-- My Location --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <!-- Maps API needs OpenGL ES 2.0. --> <uses-feature android:glEsVersion="0x00020000" android:required="true"/> <!-- End of copy. --> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" android:hardwareAccelerated="true" > <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="<YOUR VALUE>"/> <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> <activity android:name="example.gps.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>

Y el archivo xml es

<?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" class="com.google.android.gms.maps.SupportMapFragment" />

La clase Java es

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

Eso resolvió mi problema


Tuve este error también y fue debido a PERMISOS EXTERNOS. No tiene sentido, pero agregué este permiso y desde entonces todo ha funcionado bien.


Tuve un error similar y creo que viene de este punto: cuando incluyo la API de servicio de Google Play, no la copio en mi espacio de trabajo, ¡¡¡utilizo la original !!!

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

Mira este punto


el uso de ambas referencias de metadatos resolvió el problema en mi caso:

<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="yourAPIkeyFromGoogleAPIConsole" />