android.util.AndroidRuntimeException:在添加内容之前必须调用requestFeature()
我得到这个android.util.AndroidRuntimeException: requestFeature() must be called before adding content
错误android.util.AndroidRuntimeException: requestFeature() must be called before adding content
。 正如你在下面的代码中看到的, requestWindowFeature(Window.FEATURE_NO_TITLE);
行在setContentView(R.layout.mainmenu);
之前setContentView(R.layout.mainmenu);
代码行。 这个onCreate()代码在我的每一个活动中都是相同的格式,而且我从来没有遇到过麻烦。 自从我更新到ADT 22以来,随处都出现了很多随机错误。 我清除了很多这些错误,这是我最近的错误。
我能做些什么来解决这个错误?
@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
我也遇到了这个问题,但是当我调用super.onCreate()之前调用窗口请求,然后问题解决了,请尝试它也喜欢..
@Override public void onCreate(Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_NO_TITLE); super.onCreate(savedInstanceState); setContentView(R.layout.mainmenu); }
希望对你有帮助…:)
编辑:为Android的新版本的其他可能的解决scheme
在Android 4.0及更低版本上隐藏状态栏
<application ... android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen" > ... </application>
使用活动主题的优点如下:
- 与编程设置标志相比,维护起来更容易,而且容易出错。
- 它会导致更平滑的UI转换,因为在实例化应用程序的主要活动之前,系统具有呈现UI所需的信息。
Android版本比Jellybean低
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // If the Android version is lower than Jellybean, use this call to hide // the status bar. if (Build.VERSION.SDK_INT < 16) { getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); } setContentView(R.layout.activity_main); }
隐藏Android 4.1及更高版本的状态栏
View decorView = getWindow().getDecorView(); // Hide the status bar. int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN; decorView.setSystemUiVisibility(uiOptions); // Remember that you should never show the action bar if the // status bar is hidden, so hide that too if necessary. ActionBar actionBar = getActionBar(); actionBar.hide();
请注意以下几点:
- 一旦UI标志被清除(例如,通过导航离开活动),如果您想再次隐藏栏,则您的应用程序需要重置它们。 有关如何侦听UI可见性更改的讨论,请参阅响应UI可见性更改 ,以便您的应用程序可以做出相应的响应。
- 你在哪里设置UI标志有所作为。 如果您将系统栏隐藏在您的活动的onCreate()方法中,并且用户按Home,系统栏将重新出现。 当用户重新打开活动时,onCreate()不会被调用,所以系统栏将保持可见。 如果您希望系统UI更改在用户导入和导出活动时保持不变,请在onResume()或onWindowFocusChanged()中设置UI标志。
- setSystemUiVisibility()方法只有在你调用它的视图是可见的时才有效果。
- 从视图导航导致用setSystemUiVisibility()设置的标志被清除。
我得到了这个exception( android.util.AndroidRuntimeException: requestFeature() must be called before adding content
),当使用
requestWindowFeature(Window.FEATURE_NO_TITLE);
在运行Android 2.3.5(姜饼)的旧设备。 我正在使用v7支持库。
当我改变它使用时,错误是固定的:
supportRequestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
(这是在修复中的super.onCreate调用之后)。 请参阅https://developer.android.com/reference/android/support/v7/app/ActionBarActivity.html#supportRequestWindowFeature(int)上的文档;
所以它可能更多的是一个误导性的错误信息比其他任何情况。
请检查你的类是从Activity还是ActionBarActivity扩展。 如果您正在使用ActionBarActivity,请使用“活动”。
如果您将自己的活动用作Dialog(使用Theme.Dialog),那么请确保扩展Activity而不是ActionBarActivity(使用Android Studio向导给出的默认值)。 那么你可以使用
requestWindowFeature(Window.FEATURE_NO_TITLE);
要么
supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
在super.onCreate()
…之后…
我正在扩展一个DialogFragment ,上面的答案没有工作。 我不得不使用getDialog()来删除标题:
getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> <item name="android:windowActionBar">false</item> </style>
我也遇到了来自不同工作stream程的这个错误。 我创build了一个自定义的DialogFragment类,并创build了两个@Override
函数 – onCreateView和onCreateDialog。 我的onCreateView函数抓取了片段的自定义布局,我的onCreateDialog函数创build了一个AlertDialog.Builder。
这似乎不工作,因为onCreateDialog之前调用onCreateView。 删除onCreateView [通过移动我的自定义视图膨胀到onCreateDialog后,我遇到了错误:
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
我意识到我的困难来自于尝试实现两个覆盖,因为我想1)使用对话框的主视图布局,2)使用Builder预定义的正/负button。 我的解决scheme是在我的自定义对话框视图中创build正面/负面的button,所以我删除了我的实现覆盖onCreateDialog函数。
希望这有助于未来的人!
以下是一些帮助我的问题:
- 在DialogFragment中为AlertDialog夸大自定义视图的问题
- DialogFragment中的ViewPager – IllegalStateException:Fragment没有视图
- DialogFragment的自定义布局OnCreateView与OnCreateDialog
- 指定的孩子已经有一个父母。 您必须首先调用子对象的父对象的removeView()
扩展( Activity )而不是( ActionBarActivity )
例如: public class Itemdetails extends Activity {....
然后在onCreate写:
super.onCreate(savedInstanceState); this.requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.Your_Activity);
我认为最简单的方法是使用下面的代码
getActionBar().setTitle(null);
- 如何使用android模拟器testing蓝牙应用程序?
- Android:意图的setFlags和addFlags之间有什么区别
- 为什么使用KML数据检索Android版Google路线不再适用?
- 我如何使WRAP_CONTENT在RecyclerView上工作
- 当我将Firebase中的JSON转换为Java对象时,为什么会出现“无法popupinput”?
- 重力如何影响Android中的PopupWindow.showAtLocation()
- Android NDK C ++ JNI(找不到原生的实现…)
- 刚刚上传的Android应用程序:应用程序在Android电子市场search中显示多久?
- 如何为谷歌地图api v2设置默认位置和缩放级别?