ActionBarActivity requestFeature необходимо вызвать перед добавлением содержимого

Изменить комментарий matias's комментариям matias's

На самом деле, изначально у меня не было supportRequestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); Или requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); В моем коде, пока я не заметил runtime exception when below combinations of actions happened время runtime exception when below combinations of actions happened

Пользователь нажимает кнопку « Домой» , чтобы свести к минимуму приложение и попытался возобновить его из последних приложений ( что долгое нажатие кнопки «домой» )

Когда происходит поворот экрана (Примечание: манифест не имеет объявлений configChange )

Тогда я думал, что показ неопределенного индикатора выполнения во время инициализации должен быть причиной проблемы, поэтому только я попытался вызвать метод request* , думая, что он очистит его, но ничего не произошло.

Наконец, я удалил showPdIndeterminate(); Для тестирования. Поэтому нигде в моем коде я не показываю его. Тем не менее это происходит во время вышеупомянутых обстоятельств


У меня есть ActionBarActivity , основанный на фрагменте, мой макет обернут внутри DrawerLayout two framelayouts чтобы провести два фругации.

Я попробовал requestFeature () должен быть вызван перед добавлением ошибки содержимого на super.onCreate, но все равно такое же исключение для

 @Override protected void onCreate(Bundle savedInstanceState) { Log.e(TAG, "Inside OnCreate"); // supportRequestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); showPdIndeterminate(); .... } 

И showPdIndeterminate() является

 private void showPdIndeterminate() { pd = ProgressDialog.show(this, "Initializing", "Pls wait..."); pd.setIndeterminate(true); pd.show(); } 

Я получаю supportRequestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); NullPointerException если я попробую supportRequestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); , Поэтому только прокомментировал это.

Журнал ошибок:

 06-16 04:04:57.280: D/AndroidRuntime(27280): Shutting down VM 06-16 04:04:57.280: W/dalvikvm(27280): threadid=1: thread exiting with uncaught exception (group=0x413592a0) 06-16 04:04:57.285: E/AndroidRuntime(27280): FATAL EXCEPTION: main 06-16 04:04:57.285: E/AndroidRuntime(27280): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.demo/com.example.demo.MainActivity}: android.util.AndroidRuntimeException: requestFeature() must be called before adding content 06-16 04:04:57.285: E/AndroidRuntime(27280): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2100) 06-16 04:04:57.285: E/AndroidRuntime(27280): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2125) 06-16 04:04:57.285: E/AndroidRuntime(27280): at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3553) 06-16 04:04:57.285: E/AndroidRuntime(27280): at android.app.ActivityThread.access$700(ActivityThread.java:140) 06-16 04:04:57.285: E/AndroidRuntime(27280): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1233) 06-16 04:04:57.285: E/AndroidRuntime(27280): at android.os.Handler.dispatchMessage(Handler.java:99) 06-16 04:04:57.285: E/AndroidRuntime(27280): at android.os.Looper.loop(Looper.java:137) 06-16 04:04:57.285: E/AndroidRuntime(27280): at android.app.ActivityThread.main(ActivityThread.java:4898) 06-16 04:04:57.285: E/AndroidRuntime(27280): at java.lang.reflect.Method.invokeNative(Native Method) 06-16 04:04:57.285: E/AndroidRuntime(27280): at java.lang.reflect.Method.invoke(Method.java:511) 06-16 04:04:57.285: E/AndroidRuntime(27280): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006) 06-16 04:04:57.285: E/AndroidRuntime(27280): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773) 06-16 04:04:57.285: E/AndroidRuntime(27280): at dalvik.system.NativeStart.main(Native Method) 06-16 04:04:57.285: E/AndroidRuntime(27280): Caused by: android.util.AndroidRuntimeException: requestFeature() must be called before adding content 06-16 04:04:57.285: E/AndroidRuntime(27280): at com.android.internal.policy.impl.PhoneWindow.requestFeature(PhoneWindow.java:267) 06-16 04:04:57.285: E/AndroidRuntime(27280): at android.app.Activity.requestWindowFeature(Activity.java:3320) 06-16 04:04:57.285: E/AndroidRuntime(27280): at android.support.v7.app.ActionBarActivityDelegateICS.onCreate(ActionBarActivityDelegateICS.java:63) 06-16 04:04:57.285: E/AndroidRuntime(27280): at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:98) 06-16 04:04:57.285: E/AndroidRuntime(27280): at com.example.demo.MainActivity.onCreate(MainActivity.java:464) 06-16 04:04:57.285: E/AndroidRuntime(27280): at android.app.Activity.performCreate(Activity.java:5206) 06-16 04:04:57.285: E/AndroidRuntime(27280): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1083) 06-16 04:04:57.285: E/AndroidRuntime(27280): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2064) 06-16 04:04:57.285: E/AndroidRuntime(27280): ... 12 more 

Примечание. Я получаю это исключение при изменении ориентации, а также когда я запускаю его из списка последних приложений, нажав кнопку «домой»

Это исключение ** в конечном счете ** возникает без учета наличия (не имеющего) setRetainInstance(true); В фрагменте onActivityCreated() or onCreate () `

Почему это происходит? Как его решить?

Solutions Collecting From Web of "ActionBarActivity requestFeature необходимо вызвать перед добавлением содержимого"

Переопределите setContentView в своей деятельности и посмотрите, где / что вызывает метод. Как только вы узнаете, что называется, я уверен, что мы сможем найти приемлемое решение.

 @Override public void setContentView (int layoutResID) { //Set a break point on the next line or log out a message. super.setContentView(layoutResID); } 

Попробуйте вызвать requestWindowFeature() перед setcontentView() но после onCreate() .

Работает на меня.

android.support.v7.app.ActionBarActivity изменяет содержимое окна, добавляя ActionBar . Кроме того, FEATURE_INDETERMINATE_PROGRESS зависит от того, присутствует ли панель действий или нет.

Попробуйте что-то вроде этого:

 @Override protected void onCreate(Bundle savedInstanceState) { ABD = ActionBarActivityDelegate.createDelegate(this); super.onCreate(savedInstanceState); ABD.onCreate(savedInstanceState); } 

Класс ActionBarActivityDelegate можно найти здесь .

Наконец, вы должны изучить возможность блокировки ориентации экранов, если это возможно. Это подробно описано здесь .