J'ai une classe abstraite étendant ActionBarActivity
. Dans le onCreate
, j'ai:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
supportRequestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
...
}
L'application se bloque en raison de requestFeature () avant l'erreur de contenu, en particulier sur la ligne super.onCreate(savedInstanceState)
. Après avoir lu certains des articles similaires, j'ai trouvé cette solution:
@Override
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
super.onCreate(savedInstanceState);
...
}
Ma question est: pourquoi ça plante sur le super appel? De plus, je ne suis pas settingContentView
dans les classes qui étendent cette classe jusqu'à APRÈS avoir appelé super.onCreate
. Il plante encore occasionnellement.
Java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myapp/com.myapp.cycle.Cycle}: Android.util.AndroidRuntimeException: requestFeature() must be called before adding content
at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2351)
at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2387)
at Android.app.ActivityThread.access$600(ActivityThread.Java:151)
at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1331)
at Android.os.Handler.dispatchMessage(Handler.Java:99)
at Android.os.Looper.loop(Looper.Java:155)
at Android.app.ActivityThread.main(ActivityThread.Java:5454)
at Java.lang.reflect.Method.invokeNative(Native Method)
at Java.lang.reflect.Method.invoke(Method.Java:511)
at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:1029)
at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:796)
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:320)
at Android.app.Activity.requestWindowFeature(Activity.Java:3283)
at Android.support.v7.app.ActionBarActivityDelegateICS.onCreate(ActionBarActivityDelegateICS.Java:63)
at Android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.Java:98)
at com.myapp.core.activity.MyActivity.onCreate(MyActivity.Java:83)
at com.myapp.cycle.Cycle.onCreate(Cycle.Java:55)
at Android.app.Activity.performCreate(Activity.Java:5066)
at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1101)
at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2307)
... 11 more
Car Android.support.v7.app.ActionBarActivity
modifie le contenu de la fenêtre en ajoutant un ActionBar.
Veuillez consulter le code commençant par
@Override
protected void onCreate(Bundle savedInstanceState) {
mImpl = ActionBarActivityDelegate.createDelegate(this);
super.onCreate(savedInstanceState);
mImpl.onCreate(savedInstanceState);
}
et sur https://Android.googlesource.com/platform/frameworks/support/+/master/v7/appcompat/src/Android/support/v7/app/ActionBarActivity.Java pour plus de détails.
Et ce que le FEATURE_INDETERMINATE_PROGRESS
ressemble dépend de la présence ou non d'un ActionBar. Donc, cela doit être réglé avant le super appel.