"RequestFeature () debe ser llamado antes de agregar el contenido" plantilla de detalle maestro

Comencé una nueva aplicación con la plantilla de detalle maestro.

Cuando intento la aplicación en mi tableta, utilizando el diseño de dos paneles, se bloquea con la excepción en el título cuando cambio la orientación de la tableta. Esto sólo ocurre si el fragmento de detalle tiene contenido.

El accidente está en línea super.onCreate , ni siquiera estoy llamando requestFeature , así que ni siquiera es mi código:

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_item_list); if (findViewById(R.id.item_detail_container) != null) { // The detail container view will be present only in the // large-screen layouts (res/values-large and // res/values-sw600dp). If this view is present, then the // activity should be in two-pane mode. mTwoPane = true; // In two-pane mode, list items should be given the // 'activated' state when touched. ((ItemListFragment) getSupportFragmentManager().findFragmentById( R.id.item_list)).setActivateOnItemClick(true); } } 

Rastro de la pila:

  12-14 23:18:44.716: E/AndroidRuntime(32065): FATAL EXCEPTION: main 12-14 23:18:44.716: E/AndroidRuntime(32065): Process: com.manor.barcam, PID: 32065 12-14 23:18:44.716: E/AndroidRuntime(32065): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.manor.barcam/com.manor.barcam.ItemListActivity}: android.util.AndroidRuntimeException: requestFeature() must be called before adding content 12-14 23:18:44.716: E/AndroidRuntime(32065): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195) 12-14 23:18:44.716: E/AndroidRuntime(32065): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 12-14 23:18:44.716: E/AndroidRuntime(32065): at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3738) 12-14 23:18:44.716: E/AndroidRuntime(32065): at android.app.ActivityThread.access$900(ActivityThread.java:135) 12-14 23:18:44.716: E/AndroidRuntime(32065): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1202) 12-14 23:18:44.716: E/AndroidRuntime(32065): at android.os.Handler.dispatchMessage(Handler.java:102) 12-14 23:18:44.716: E/AndroidRuntime(32065): at android.os.Looper.loop(Looper.java:136) 12-14 23:18:44.716: E/AndroidRuntime(32065): at android.app.ActivityThread.main(ActivityThread.java:5017) 12-14 23:18:44.716: E/AndroidRuntime(32065): at java.lang.reflect.Method.invokeNative(Native Method) 12-14 23:18:44.716: E/AndroidRuntime(32065): at java.lang.reflect.Method.invoke(Method.java:515) 12-14 23:18:44.716: E/AndroidRuntime(32065): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 12-14 23:18:44.716: E/AndroidRuntime(32065): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 12-14 23:18:44.716: E/AndroidRuntime(32065): at dalvik.system.NativeStart.main(Native Method) 12-14 23:18:44.716: E/AndroidRuntime(32065): Caused by: android.util.AndroidRuntimeException: requestFeature() must be called before adding content 12-14 23:18:44.716: E/AndroidRuntime(32065): at com.android.internal.policy.impl.PhoneWindow.requestFeature(PhoneWindow.java:249) 12-14 23:18:44.716: E/AndroidRuntime(32065): at android.app.Activity.requestWindowFeature(Activity.java:3298) 12-14 23:18:44.716: E/AndroidRuntime(32065): at android.support.v7.app.ActionBarActivityDelegateICS.onCreate(ActionBarActivityDelegateICS.java:63) 12-14 23:18:44.716: E/AndroidRuntime(32065): at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:98) 12-14 23:18:44.716: E/AndroidRuntime(32065): at com.manor.barcam.ItemListActivity.onCreate(ItemListActivity.java:54) 12-14 23:18:44.716: E/AndroidRuntime(32065): at android.app.Activity.performCreate(Activity.java:5231) 12-14 23:18:44.716: E/AndroidRuntime(32065): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 12-14 23:18:44.716: E/AndroidRuntime(32065): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159) 12-14 23:18:44.716: E/AndroidRuntime(32065): ... 12 more 

¿Cómo puedo resolverlo?

Gracias.

Tengo el mismo problema, pero sucedió cuando la aplicación fue eliminada en segundo plano por el sistema operativo. Tracé el problema a ActionBarActivityDelegateICS.java de appcompat donde se llama a requestWindowFeature () después de super.onCreate:

  super.onCreate(savedInstanceState); if (mHasActionBar) { // If action bar is requested by inheriting from the appcompat theme, // the system will not know about that. So explicitly request for an action bar. mActivity.requestWindowFeature(WindowCompat.FEATURE_ACTION_BAR); } if (mOverlayActionBar) { mActivity.requestWindowFeature(WindowCompat.FEATURE_ACTION_BAR_OVERLAY); } 

Así que importé el appcompat de git y cambié el código anterior para llamar al super.onCreate () después de .requestWindowFeature () que solucionó el problema. También envió un informe de errores a Google

Ninguno de ellos resolvió mi caso. Ése es porqué subo con una solución desagradable.

Mi aplicación se estaba estrellando cuando el android OS mata a mi aplicación después de mucho tiempo en segundo plano.

Durante la depuración descubro que mi aplicación se está estrellando en super.onCreate(savedInstanceState);

Pero se bloquea sólo cuando el savedInstanceState no es null . Y no necesito ninguna entrada de usuario para ser guardado y repoblado. Por lo tanto, sólo hago llamada a super.onCreate(null) si savedInstanceState no es null .

Y mi comentario va antes de esa línea

  /* * This may be the wrong workaround!!! * It demands more research.. * But for now, if it solves the problem, then it is a solution :D * */ if(savedInstanceState!=null){ super.onCreate(null); } else { super.onCreate(savedInstanceState); } 

Estará tratando de encontrar la solución adecuada para ello.

Acabo de ver esto en una de mis aplicaciones. En mi caso el culpable fue una llamada a getActivity().getActionBar() en uno de mis fragmentos en onCreate() . Esto tiene el efecto secundario de crear un contentView para usted si uno no existe.

Mover esa línea a onViewCreated() resolvió el problema

Trate de usar getSupportActionBar(); En lugar de getActionBar();

  • Android reemplaza fragmento o inicia nueva actividad con fragmento
  • Conservar estado de fragmento entre actividades
  • Comprobar la existencia de un fragmento usando Robotium - Android
  • Cómo utilizar la vinculación de datos con Fragment
  • Fragmento de bus de eventos
  • Animación 3D Flip en android.support.v4.Fragment
  • Cómo configurar ArrayAdapter para spinner en Fragment
  • Transiciones de actividad y fragmentos en Lollipop
  • OnActivityResult () no se llama
  • Taps rápidos (clics) en RecyclerView abre varios fragmentos
  • Ocultar barra de acción en el fragmento lanza NullPointerException?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.