Ich erhalte diesen android.util.AndroidRuntimeException: requestFeature() must be called before adding content
Fehler. Wie Sie im folgenden Code sehen können, steht die requestWindowFeature(Window.FEATURE_NO_TITLE);
Zeile vor setContentView(R.layout.mainmenu);
der Codezeile. Dieser onCreate () - Code hat in nahezu jeder meiner Aktivitäten das gleiche Format und ich hatte bisher noch nie Probleme damit. Seit ich auf ADT 22 aktualisiert habe, sind überall viele zufällige Fehler aufgetreten. Ich habe viele dieser Fehler beseitigt und dies ist meine neueste.
Was kann ich tun, um diesen Fehler zu beheben?
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.mainmenu);
LogCat
05-31 04:20:43.121: E/AndroidRuntime(14559): FATAL EXCEPTION: main
05-31 04:20:43.121: E/AndroidRuntime(14559): java.lang.RuntimeException: Unable to start activity ComponentInfo{matt.lyons.bibletrivia.lite/matt.lyons.bibletrivia.lite.MainMenu}: android.util.AndroidRuntimeException: requestFeature() must be called before adding content
05-31 04:20:43.121: E/AndroidRuntime(14559): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
05-31 04:20:43.121: E/AndroidRuntime(14559): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
05-31 04:20:43.121: E/AndroidRuntime(14559): at android.app.ActivityThread.access$600(ActivityThread.java:141)
05-31 04:20:43.121: E/AndroidRuntime(14559): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
05-31 04:20:43.121: E/AndroidRuntime(14559): at android.os.Handler.dispatchMessage(Handler.java:99)
05-31 04:20:43.121: E/AndroidRuntime(14559): at android.os.Looper.loop(Looper.java:137)
05-31 04:20:43.121: E/AndroidRuntime(14559): at android.app.ActivityThread.main(ActivityThread.java:5041)
05-31 04:20:43.121: E/AndroidRuntime(14559): at java.lang.reflect.Method.invokeNative(Native Method)
05-31 04:20:43.121: E/AndroidRuntime(14559): at java.lang.reflect.Method.invoke(Method.java:511)
05-31 04:20:43.121: E/AndroidRuntime(14559): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
05-31 04:20:43.121: E/AndroidRuntime(14559): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
05-31 04:20:43.121: E/AndroidRuntime(14559): at dalvik.system.NativeStart.main(Native Method)
05-31 04:20:43.121: E/AndroidRuntime(14559): Caused by: android.util.AndroidRuntimeException: requestFeature() must be called before adding content
05-31 04:20:43.121: E/AndroidRuntime(14559): at com.android.internal.policy.impl.PhoneWindow.requestFeature(PhoneWindow.java:229)
05-31 04:20:43.121: E/AndroidRuntime(14559): at android.app.Activity.requestWindowFeature(Activity.java:3244)
05-31 04:20:43.121: E/AndroidRuntime(14559): at matt.lyons.bibletrivia.lite.MainMenu.onCreate(MainMenu.java:28)
05-31 04:20:43.121: E/AndroidRuntime(14559): at android.app.Activity.performCreate(Activity.java:5104)
05-31 04:20:43.121: E/AndroidRuntime(14559): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
05-31 04:20:43.121: E/AndroidRuntime(14559): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
05-31 04:20:43.121: E/AndroidRuntime(14559): ... 11 more
Antworten:
Ich war auch mit diesem Problem konfrontiert, aber wenn ich die Fensteranforderung aufrufe, bevor ich super.onCreate () aufrufe, dann ist das Problem gelöst, bitte versuchen Sie es auch wie ..
Hoffe das wird dir helfen ... :)
Bearbeitet: Für andere mögliche Lösungen für neue Android-Versionen
Blenden Sie die Statusleiste unter Android 4.0 und niedriger aus
Die Verwendung eines Aktivitätsthemas bietet folgende Vorteile:
Android-Version ist niedriger als Jellybean
Blenden Sie die Statusleiste unter Android 4.1 und höher aus
Beachte das Folgende:
quelle
requestWindowFeature
vorher anzurufensuper.onCreate
. Sie können sich über den Status der Aktivität vor diesem Zeitpunkt nicht sicher sein.Ich habe diese Ausnahme (
android.util.AndroidRuntimeException: requestFeature() must be called before adding content
) bei der Verwendungin einem älteren Gerät mit Android 2.3.5 (Gingerbread). Ich verwende die v7-Unterstützungsbibliothek.
Der Fehler wurde behoben, als ich ihn änderte, um zu verwenden:
(Dies kommt auch nach meinem super.onCreate-Aufruf im Fix). Siehe Dokumente unter https://developer.android.com/reference/android/support/v7/app/ActionBarActivity.html#supportRequestWindowFeature(int)
Es kann sich also eher um eine irreführende Fehlermeldung als um irgendetwas anderes handeln.
quelle
appCompat
und sosupportRequestWindowFeature
tat der Trick für mich und ich musste es nicht vorher setzensuper.onCreate
Bitte überprüfen Sie, ob Ihre Klasse von Activity oder ActionBarActivity erweitert wurde. Wenn Sie ActionBarActivity verwenden, verwenden Sie bitte Activity.
quelle
Wenn Sie Ihre Aktivität als Dialogfeld (mit Theme.Dialog) verwenden, stellen Sie sicher, dass Sie Aktivität anstelle von ActionBarActivity erweitern (die Standardeinstellung, die Sie mit dem Android Studio-Assistenten erhalten haben). Dann können Sie verwenden
oder
Nach dem
super.onCreate()
...quelle
Ich bin auch auf diesen Fehler aus einem anderen Workflow gestoßen. Ich habe eine benutzerdefinierte DialogFragment-Klasse erstellt und zwei
@Override
Funktionen erstellt - onCreateView und onCreateDialog. Meine onCreateView-Funktion hat ein benutzerdefiniertes Layout für das Fragment erstellt, und meine onCreateDialog-Funktion hat einen AlertDialog.Builder erstellt.Dies schien nicht zu funktionieren, da der onCreateDialog vor onCreateView aufgerufen wird. Nachdem ich onCreateView [durch Verschieben meiner benutzerdefinierten Ansichtsinflation in onCreateDialog gelöscht habe, ist der Fehler aufgetreten:
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
Ich erkannte, dass meine Schwierigkeit darin bestand, beide Überschreibungen zu implementieren, da ich 1) ein Layout für die Hauptansicht des Dialogfelds verwenden und 2) die vom Builder vordefinierten Positiv / Negativ-Schaltflächen verwenden wollte. Meine Lösung bestand darin, die positiven / negativen Schaltflächen in meiner benutzerdefinierten Dialogansicht zu erstellen. Daher habe ich meine Implementierung der Funktion Override onCreateDialog gelöscht.
Hoffe das hilft jemandem in der Zukunft!
Hier sind einige SO-Fragen, die mir geholfen haben:
quelle
Nur einen solchen Stil einstellen, es ist keine Änderung der Codierungsseite erforderlich.
quelle
Ich habe ein DialogFragment erweitert und die obige Antwort hat nicht funktioniert. Ich musste getDialog () verwenden, um den Titel zu entfernen:
quelle
Erweitern Sie ( Aktivität ) anstelle von ( ActionBarActivity )
Beispiel:
public class Itemdetails extends Activity {....
dann in das onCreate schreiben:
quelle
Ich denke, der einfachste Weg, dies zu tun, ist die Verwendung des folgenden Codes
quelle
Bitte probieren Sie die folgenden Optionen aus, mindestens eine davon sollte für Sie funktionieren:
Wenn Sie ein DialogFragment verwenden, versuchen Sie nicht, beide Methoden zu überschreiben
onCreateDialog(..)
undonCreateView(..)
(Diese Änderung hat bei mir funktioniert)Versuchen Sie es
supportRequestWindowFeature(Window.FEATURE_NO_TITLE)/requestWindowFeature(Window.FEATURE_NO_TITLE)
vorhersetContentView(..)
in der Aktivität und danachsuper.onCreate(..);
Versuchen Sie vorher Option 2
super.onCreate(..);
quelle
Ihre Zeile wurde falsch platziert: super.onCreate (savedInstanceState);
benutze diese Art:
quelle
Ich hatte diesen Fehler mit
AlertDialog
und der Fehler trat in API 19 nur auf, wenn erdialog.show()
aufgerufen wurde.android.app.AlertDialog
Ich habe herausgefunden, dass der Import das Problem verursacht, also habe ich es geändertandroidx.appcompat.app.AlertDialog
und es behoben.Beachten Sie, dass dies funktioniert, wenn Sie Androidx verwenden. Wenn Sie dies nicht tun, sollten Sie die alte Appcompat-Version dieses Imports verwenden.
quelle