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:
- Comenzó con una actividad en blanco.
- 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
- Se agregó google-play-services_lib a mi Package Explorer. Indiqué que google-play-services_lib era
a library
. - Proyecto -> Propiedades -> Android -> Biblioteca -> Agregar -> y elijo la ubicación en google-play-services_lib.
- 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
- google-play-services_lib
- 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
Utilicé "Error al inflar el fragmento de clase" con el mapa de google para intentar solucionar mis problemas.
Hice referencia a esta guía de inicio rápido de google maps para crear mi proyecto.
Inicialmente comencé con el código de muestra de la Introducción a Google Maps Android V2 Api.
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" />