2013-10-07 12 views
6

Dopo l'ultimo aggiornamento la mia applicazione ha il seguente problema:AndroidRuntimeException: requestFeature() deve essere chiamato prima di aggiungere contenuti esclusivi per Honeycomb 3.1 - 3.2.1

java.lang.RuntimeException: Unable to start activity ComponentInfo{my.package/my.package.MyMainActivity}: android.util.AndroidRuntimeException: requestFeature() must be called before adding content 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1818) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1834) 
at android.app.ActivityThread.access$500(ActivityThread.java:122) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1027) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:132) 
at android.app.ActivityThread.main(ActivityThread.java:4126) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:491) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: android.util.AndroidRuntimeException: requestFeature() must be called before adding content 
at com.android.internal.policy.impl.PhoneWindow.requestFeature(PhoneWindow.java:214) 
at android.support.v7.app.ActionBarActivityDelegateHC.onCreate(ActionBarActivityDelegateHC.java:38) 
at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:98) 
at my.package.MyBaseActivity.onCreate(MyBaseActivity.java:68) 
at my.package.MyApiServiceActivity.onCreate(MyApiServiceActivity.java:51) 
at my.package.MyActivity.onCreate(MyActivity.java:88) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1050) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1782) 
... 11 more 

Tuttavia, non sono mai chiamare requestWindowFeature o simili. Non ci sono nemmeno dialoghi coinvolti. Il rapporto stesso proviene da BugSense, non ho mai avuto questo problema me stesso. È un'app molto popolare e il problema è esclusivo per Android Honeycomb: 3.2, 3.2.1 e 3.1. Non è successo nella versione precedente dell'app. L'unica modifica nella funzione onCreate poiché l'aggiornamento è il fatto che sono passato da ActionBarSherlock a ActionBarCompat.

Chiunque ha individuato anche questo problema e/o ha qualche idea su come superare il problema?

EDIT: sto aggiungendo il link per the source for ActionBarActivityDelegateHC dalla confezione v7 in cui la traccia incidente dello stack (causato da ...) inizia. Lì si verifica la chiamata a richiesta, ma viene chiamata correttamente, anche prima dello super.onCreate.

Io uso Gradle per importare il pacchetto: compile 'com.android.support:appcompat-v7:18.0.+'

+1

lo stesso problema durante la rotazione, suppongo di risolverlo bloccando l'orientamento sui dispositivi a nido d'ape. ci sono troppe statistiche per il favo: http://developer.android.com/about/dashboards/index.html#Platform, quindi non ci preoccuperemo) –

+0

@shomeser Sai se questo problema specifico della rotazione? – zilinx

+0

Lo riproduco solo durante la rotazione, quindi bloccherò l'orientamento orizzontale sul nido d'ape, ma se trovi una soluzione adatta, la userò –

risposta

6

Così si presenta come soluzione da @shomeser (commenti alla domanda) è un modo per andare per il momento.

Ci sono due modi per compromettere:

  • Se non si dispone di diversi layout per orizzontale e verticale, è possibile disattivare i cambiamenti di orientamento (in AndroidManifest: android:configChanges="screenSize|orientation")
  • Se si dispone di alcuni trattamenti sul cambiamento dell'orientamento e non può usare "configChanges", è possibile bloccare l'orientamento (in onCreate)
 
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB 
      || Build.VERSION.SDK_INT <= Build.VERSION_CODES.HONEYCOMB_MR2) 
    { 
     this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
    } 
  • e infine il mio meno preferito (postando questo per il completamento però), rilascia ABC e torna ad ABS.

Ho anche inviato un ticket on Android Issue Tracker, ma trattandosi di un problema di Honeycomb, non mi aspetto di ottenere una risposta.

AGGIORNAMENTO: Dopo aver rilasciato l'app con orientamento bloccato per specifici dispositivi Honeycomb, continuo a visualizzare questo arresto, anche se meno frequente.

UPDATE 2: problema è stato risolto! Ora aspetta solo il rilascio della nuova lib di supporto: google issue tracker

+0

hai stacktrace di crash, è lo stesso del primo? e hai testato la tua applicazione su un dispositivo reale? –

+0

@shomeser è la stessa traccia di stack - si blocca su attività che hanno l'orientamento bloccato; il bug report rimanda a dispositivi reali (sempre le stesse versioni Honeycomb). – zilinx

+0

dammi un link alla tua domanda, per favore. Penso che tu possa riprodurlo dopo una pausa e riprendere. –