ActionBarActivity
を拡張する抽象クラスがあります。 onCreate
には、次のものが含まれています。
_@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
supportRequestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
...
}
_
コンテンツエラーの前のrequestFeature()が原因で、特にsuper.onCreate(savedInstanceState)
の行でアプリがクラッシュします。同様の投稿をいくつか読んだ後、私はこの解決策を思いつきました:
_@Override
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
super.onCreate(savedInstanceState);
...
}
_
私の質問は、スーパーコールでクラッシュするのはなぜですか?また、_super.onCreate
_を呼び出した後まで、このクラスを拡張するクラスではsettingContentView
ではありません。それでも時々クラッシュしています。
_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
_
Android.support.v7.app.ActionBarActivity
ActionBarを追加してウィンドウの内容を変更します。
で始まるコードをご覧ください
@Override
protected void onCreate(Bundle savedInstanceState) {
mImpl = ActionBarActivityDelegate.createDelegate(this);
super.onCreate(savedInstanceState);
mImpl.onCreate(savedInstanceState);
}
詳細は https://Android.googlesource.com/platform/frameworks/support/+/master/v7/appcompat/src/Android/support/v7/app/ActionBarActivity.Java をご覧ください。
そしてFEATURE_INDETERMINATE_PROGRESS
は、ActionBarが存在するかどうかによって異なります。したがって、スーパーコールの前に設定する必要があります。