Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Error de Google Map V2 android error de fragmento de clase de inflado

Estoy creando una aplicación con la pestaña y tengo mapa en una de las pestañas, cuando abro el mapa de que funciona bien y cuando visite alguna otra pestaña que el tiempo también funciona bien, pero cuando vuelvo a la pestaña de mapa de la aplicación se bloquea Con este error.

04-09 14:10:43.866: E/AndroidRuntime(28184): android.view.InflateException: Binary XML file line #42: Error inflating class fragment 04-09 14:10:43.866: E/AndroidRuntime(28184): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:697) 04-09 14:10:43.866: E/AndroidRuntime(28184): at android.view.LayoutInflater.rInflate(LayoutInflater.java:739) 04-09 14:10:43.866: E/AndroidRuntime(28184): at android.view.LayoutInflater.rInflate(LayoutInflater.java:742) 04-09 14:10:43.866: E/AndroidRuntime(28184): at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 04-09 14:10:43.866: E/AndroidRuntime(28184): at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 04-09 14:10:43.866: E/AndroidRuntime(28184): at com.research.fragmenttabstudy.tabA.TodaysDealLocation.onCreateView(TodaysDealLocation.java:43) 

Aquí está mi código:

 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Log.d("err","todaysdeal location"); Log.d("err","todaysdeal location"+inflater.toString()+" "+container.toString()+" "); super.onCreateView(inflater, container, savedInstanceState); // map.clear(); View view = inflater.inflate(R.layout.todays_deal_location, container, false); Log.d("err",view.toString()); back = (ImageView) view.findViewById(R.id.list); back.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub // Constants.passcode_chk = 0; // finish(); mActivity.popFragments(); } }); return view; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); map = ((SupportMapFragment) getFragmentManager().findFragmentById( R.id.mapp)).getMap(); map.setMapType(GoogleMap.MAP_TYPE_NORMAL); } 

Xml:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ImageView android:id="@+id/imageView1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:src="@drawable/topbar" /> <!-- <ImageView --> <!-- android:id="@+id/deallistmenu" --> <!-- android:layout_width="wrap_content" --> <!-- android:layout_height="wrap_content" --> <!-- android:layout_marginLeft="5dp" --> <!-- android:layout_marginTop="9dp" --> <!-- android:src="@drawable/deallist_menubtn" /> --> <ImageView android:id="@+id/list" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_marginRight="7dp" android:layout_marginTop="7dp" android:src="@drawable/map_list" /> <RelativeLayout android:id="@+id/frameLayout" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@id/imageView1" android:layout_marginTop="-4.8dp" > <!-- box layout.................................................................... --> <!-- box layout.................................................................... --> <fragment android:id="@+id/mapp" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@+id/tv_location" android:name="com.google.android.gms.maps.SupportMapFragment" /> <!-- <ZoomControls --> <!-- android:id="@+id/zoomControls" --> <!-- android:layout_width="wrap_content" --> <!-- android:layout_height="wrap_content" --> <!-- android:layout_alignParentBottom="true" --> <!-- android:layout_alignParentLeft="true" --> <!-- android:layout_marginBottom="30dp" --> <!-- android:layout_marginLeft="100dp" /> --> </RelativeLayout> <TextView android:id="@+id/barTitle" android:layout_width="match_parent" android:layout_height="50dp" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:gravity="center" android:lines="1" android:maxLines="1" android:paddingLeft="50dip" android:paddingRight="55dip" android:singleLine="true" android:text="" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="@android:color/white" android:textSize="18dp" /> </RelativeLayout> 

  • No se puede convertir a dimension: type = 0x1 cuando se ejecuta la aplicación en Android 4.1
  • "Evite pasar null como la raíz de vista" advertencia al inflar vista para su uso por AlertDialog
  • Vista previa de diseño de Android arroja error al agregar LinearLayout personalizado
  • ¿Cómo inflar otro diseño dentro de getView () del adaptador gridview en android?
  • ViewStub aumenta el error al inflar más de un diseño condicionalmente
  • LayoutParams inesperado con un LinearLayout inflado
  • ¿Cómo se utiliza el segundo parámetro en el método de inflado de la clase LayoutInflater, Android
  • Evite pasar null como raíz de vista (necesita resolver los parámetros de diseño en el elemento raíz del diseño hinchado)
  • 5 Solutions collect form web for “Error de Google Map V2 android error de fragmento de clase de inflado”

    Su problema es que usted ha declarado el google maps v2 fragmento en XML, por lo que cada vez que inflar el XML que hace un nuevo fragmento. Sin embargo, el identificador del fragmento está codificado en el XML, por lo que intentará crear el nuevo fragmento con el mismo id que el que ya se está ejecutando. Dos fragmentos en ejecución no pueden tener el mismo identificador, por lo que la aplicación se bloquea.

    La mejor manera de arreglar esto es hacer el fragmento de mapa mediante programación. Un buen ejemplo de esto se puede encontrar en ProgrammaticDemoActivity.java parte del proyecto de ejemplo de google maps.

    Sin embargo, si por alguna razón usted debe declarar su fragmento en XML, puede hacerlo funcionar matando el fragmento de mapa antiguo cuando sale de la vista, por lo que el nuevo puede ser creado.

    Usted puede hacer algo como:

     private void killOldMap() { SupportMapFragment mapFragment = ((SupportMapFragment) getSherlockActivity() .getSupportFragmentManager().findFragmentById(R.id.map)); if(mapFragment != null) { FragmentManager fM = getFragmentManager(); fM.beginTransaction().remove(mapFragment).commit(); } } 

    Y luego llame desde onDetach() y onDestroyView() para asegurarse de que el mapa antiguo se ha eliminado.

    Como puede ver, esto es un tipo de hack y es mejor fuera de forma programática hacer su aplicación en lugar de utilizar XML.

    Prueba esto…

    Llamar a esta función de onDetach () y onDestroyView () para matar la transacción de fragmento existente.

     private void commitMaps() { if (null != mapFragment) { getFragmentManager().beginTransaction().remove(mapFragment).commitAllowingStateLoss(); } } 

    A veces obtendrás "IllegalStateException: No se puede realizar esta acción después de onSaveInstanceState" si hay commit () existe una transacción de mapa. Para evitar esta excepción debe utilizar commitAllowingStateLoss () cuando se elimina exist transaction.

    Diferencia entre commit () y commitAllowingStateLoss ()

    Asegúrese de que su actividad amplía la actividad de los fragmentos y

     map=((SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map)).getMap(); 

    Y eliminar " android:layout_below="@+id/tv_location" because it is inside relative layout "

    Ve con esto y házmelo saber.

    Ya se ha creado un fragmento de mapa y cuando intentas volver a la página del mapa, intenta crear otro fragmento en la parte superior de éste. Por debajo del código finalmente funciona bien para mí:

    XML:

     <fragment xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/map" android:name="com.google.android.gms.maps.SupportMapFragment"/> 

    El primer problema que veo aquí con el código que usted presentó es esta línea:

     map = ((SupportMapFragment) getFragmentManager().findFragmentById(R.id.mapp)).getMap(); 

    Está intentando obtener un objeto SupportMapFragment utilizando el FragmentManager habitual. esto está mal. Para obtener el objeto SupportFragmentManager tiene que utilizar SupportFragmentManager como este:

     map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.mapp)).getMap(); 

    Pero mi conjetura es que los problemas que experiance ahora no se derivan todavía de este error. Creo que hace referencia a la biblioteca google-play-services biblioteca google-support-v4 la manera incorrecta.

    Puedes echar un vistazo a esta entrada de blog que escribí sobre cómo añadir Google Map API V2 a tu aplicación:

    Google Map API V2

    ACTUALIZAR:

    Si min SDK es 11, entonces puede cambiar el fragmento a este código:

     <fragment android:id="@+id/mapp" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@+id/tv_location" android:name="com.google.android.gms.maps.MapFragment" /> 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.