Error al inflar el fragmento de clase InflateException Archivo XML binario

Estoy diseñando mi primera aplicación usando Material Design y el NavigationDrawer Layout etc, y estoy corriendo en un problema. La aplicación es muy simple (sólo muestra texto) y se basa en la plantilla disponible en Android Studio.

Al intentar lanzar mi aplicación consigo el siguiente error de Logcat:

Java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.test/com.example.test.MainActivity}: android.view.InflateException: Binary XML file line #22: Error inflating class fragment at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) at android.app.ActivityThread.access$800(ActivityThread.java:144) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5221) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) Caused by: android.view.InflateException: Binary XML file line #22: Error inflating class fragment at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:763) at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) at android.view.LayoutInflater.inflate(LayoutInflater.java:504) at android.view.LayoutInflater.inflate(LayoutInflater.java:414) at android.view.LayoutInflater.inflate(LayoutInflater.java:365) at android.support.v7.app.ActionBarActivityDelegateBase.setContentView(ActionBarActivityDelegateBase.java:228) at android.support.v7.app.ActionBarActivity.setContentView(ActionBarActivity.java:102) at com.example.test.MainActivity.onCreate(MainActivity.java:92) at android.app.Activity.performCreate(Activity.java:5933) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)             at android.app.ActivityThread.access$800(ActivityThread.java:144)             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)             at android.os.Handler.dispatchMessage(Handler.java:102)             at android.os.Looper.loop(Looper.java:135)             at android.app.ActivityThread.main(ActivityThread.java:5221)             at java.lang.reflect.Method.invoke(Native Method)             at java.lang.reflect.Method.invoke(Method.java:372)             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.support.v7.app.ActionBar.getThemedContext()' on a null object reference at com.example.test.NavigationDrawerFragment.onCreateView(NavigationDrawerFragment.java:100) at android.support.v4.app.Fragment.performCreateView(Fragment.java:1786) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:920) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104) at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1206) at android.support.v4.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2159) at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:297) at android.support.v7.app.ActionBarActivity.onCreateView(ActionBarActivity.java:547) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)             at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)             at android.view.LayoutInflater.inflate(LayoutInflater.java:504)             at android.view.LayoutInflater.inflate(LayoutInflater.java:414)             at android.view.LayoutInflater.inflate(LayoutInflater.java:365)             at android.support.v7.app.ActionBarActivityDelegateBase.setContentView(ActionBarActivityDelegateBase.java:228)             at android.support.v7.app.ActionBarActivity.setContentView(ActionBarActivity.java:102)             at com.example.test.MainActivity.onCreate(MainActivity.java:92)             at android.app.Activity.performCreate(Activity.java:5933)             at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)             at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)             at android.app.ActivityThread.access$800(ActivityThread.java:144)             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)             at android.os.Handler.dispatchMessage(Handler.java:102)             at android.os.Looper.loop(Looper.java:135)             at android.app.ActivityThread.main(ActivityThread.java:5221)             at java.lang.reflect.Method.invoke(Native Method)             at java.lang.reflect.Method.invoke(Method.java:372)             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 

Mi actividad principal es la siguiente:

  protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mNavigationDrawerFragment = (NavigationDrawerFragment) getSupportFragmentManager().findFragmentById(R.id.navigation_drawer); mTitle = getTitle(); // Set up the drawer. mNavigationDrawerFragment.setUp( R.id.navigation_drawer, (DrawerLayout) findViewById(R.id.drawer_layout)); } public static class PlaceholderFragment extends Fragment { /** * The fragment argument representing the section number for this * fragment. */ private static final String ARG_SECTION_NUMBER = "section_number"; /** * Returns a new instance of this fragment for the given section * number. */ public static PlaceholderFragment newInstance(int sectionNumber) { PlaceholderFragment fragment = new PlaceholderFragment(); Bundle args = new Bundle(); args.putInt(ARG_SECTION_NUMBER, sectionNumber); fragment.setArguments(args); return fragment; } public PlaceholderFragment() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); View rootView = inflater.inflate(R.layout.fragment_main, container, false); return rootView; } @Override public void onAttach(Activity activity) { super.onAttach(activity); ((MainActivity) activity).onSectionAttached( getArguments().getInt(ARG_SECTION_NUMBER)); } } 

El onCreateView de NavigationDrawerFragment:

 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { mDrawerListView = (ListView) inflater.inflate( R.layout.fragment_navigation_drawer, container, false); mDrawerListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { selectItem(position); } }); mDrawerListView.setAdapter(new ArrayAdapter<String>( getActionBar().getThemedContext(), android.R.layout.simple_list_item_activated_1, android.R.id.text1, new String[]{ getString(R.string.title_section1), getString(R.string.title_section2), getString(R.string.title_section3), })); mDrawerListView.setItemChecked(mCurrentSelectedPosition, true); return mDrawerListView; } 

Activity_main.xml:

 <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/container" /> <fragment android:id="@+id/navigation_drawer" android:layout_width="@dimen/navigation_drawer_width" android:layout_height="match_parent" android:layout_gravity="start" android:name="com.example.test.NavigationDrawerFragment" tools:layout="@layout/fragment_navigation_drawer" /> </android.support.v4.widget.DrawerLayout> 

Fragment_navigation_drawer.xml:

 <ListView 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:choiceMode="singleChoice" android:divider="@android:color/transparent" android:dividerHeight="0dp" android:background="#cccc" tools:context=".NavigationDrawerFragment" /> 

Fragment_main.xml:

 <RelativeLayout 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:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity$PlaceholderFragment"> <TextView android:id="@+id/section_label" android:layout_width="wrap_content" android:layout_height="wrap_content" android:elevation="5dp"/> <TextView android:id="@+id/status_display" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom" android:elevation="5dp"> </TextView> </RelativeLayout> 

Si necesita más código por favor no dude en preguntar. ¡Gracias!

En su fragment_navigation_drawer.xml dé un identificador a su Listview y en su archivo onCreateView de NavigationDrawerFragment.java .

 View myParentView = inflater.inflate( R.layout.fragment_navigation_drawer, container, false); mDrawerListView = (ListView) myParentView.findViewById(R.id.listview); // the listview is the id you gave to you listview in xml 

Cambia esto:

 mDrawerListView.setAdapter(new ArrayAdapter<String>( getActionBar().getThemedContext() 

A:

 mDrawerListView.setAdapter(new ArrayAdapter<String>( getActivity(), 

Ahora puede continuar ( este es el código de precaución ).

Yo tuve el mismo problema:

Mi solución fue añadir mDrawerLayout=null; En onCreate() antes de selectItem(mCurrentSelectedPosition); .

Ninguno de los anteriores funcionó para mí. Lo que realmente funcionó es eliminar android:theme="...." de la application xml tag en el archivo AndroidManifest.xml O añadir un tema que admita ActionBar . Espero que esto ayude a salvar a alguien la lucha que tuve.

Este problema se produjo cuando creé una actividad de cajón de navegación en Android Studio 2.3.3 con API 25.

Tuve el mismo problema y resultó que hice mi aplicación a pantalla completa y sin barra de acción.

Fijé el problema cambiando mi tema a uno que tenía la barra de la acción.

  • Aplicación para Android que muestra diferentes diseños a la vez con hdmi
  • Error al analizar XML: prefijo no enlazado para mapbox
  • ¿Cuál es la mejor manera de definir constantes en android, ya sea clase estática, interfaz o recurso xml?
  • Android: ¿Cómo url de la tienda en el archivo de recursos string.xml?
  • ExpandableListView dentro de una vista de desplazamiento
  • Ancho del elemento RecyclerView layout_width = "match_parent" no coincide con el padre
  • Android: establece una vista para estar encima de los elementos dibujados con lienzo
  • Pantalla de bienvenida de Android
  • cómo encontrar mis errores en el archivo xml
  • ¿El android string.xml soporta cualquier otra forma de xml?
  • Android sdk main.out.xml error de análisis?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.