android.util.AndroidRuntimeException:在添加内容之前必须调用requestFeature()

Mat*_*att 77 java android

我收到了这个android.util.AndroidRuntimeException: requestFeature() must be called before adding content错误.正如您在下面的代码中看到的那样,该requestWindowFeature(Window.FEATURE_NO_TITLE);行在代码行之前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);
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

vis*_*dra 176

我也遇到了这个问题但是当我在调用super.onCreate()之前调用window请求时问题就解决了,请尝试它也喜欢..

@Override
public void onCreate(Bundle savedInstanceState) {
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mainmenu);
}
Run Code Online (Sandbox Code Playgroud)

希望对你有帮助...:)


编辑:针对Android新版本的其他可能解决方案

在Android 4.0和更低版本上隐藏状态栏

<application
    ...
    android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen" >
    ...
</application>
Run Code Online (Sandbox Code Playgroud)

使用活动主题的优点如下:

  • 与以编程方式设置标志相比,它更易于维护且不易出错.
  • 它导致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);
}
Run Code Online (Sandbox Code Playgroud)

在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();
Run Code Online (Sandbox Code Playgroud)

请注意以下事项:

  • 一旦UI标志被清除(例如,通过导航远离活动),如果您想再次隐藏栏,您的应用程序需要重置它们.有关如何监听UI可见性更改的讨论,请参阅响应UI可见性更改,以便您的应用可以相应地做出响应.
  • 你设置UI标志的地方有所不同.如果在活动的onCreate()方法中隐藏系统栏并且用户按下Home,系统栏将重新出现.当用户重新打开活动时,onCreate()将不会被调用,因此系统栏将保持可见.如果您希望在用户导入和导出活动时保持系统UI更改,请在onResume()或onWindowFocusChanged()中设置UI标记.
  • 方法setSystemUiVisibility()仅在您调用它的视图可见时才有效.
  • 导航离开视图会导致使用setSystemUiVisibility()设置的标志被清除.

  • @clu这个**requestFeature(int featureId)**必须在setContentView()之前调用.可以根据需要多次调用,只要它在setContentView()之前.如果未调用,则不会提供扩展功能.请求后,您无法关闭该功能.[有关详细信息,请单击此处](http://developer.android.com/reference/android/view/Window.html#requestFeature(int)) (3认同)
  • 解决了问题,但标题栏仍然出现. (3认同)
  • 我建议不要在`super.onCreate`之前调用`requestWindowFeature`.在此之前,您无法确定活动的状态. (2认同)

gke*_*kee 12

android.util.AndroidRuntimeException: requestFeature() must be called before adding content在使用时得到了异常()

requestWindowFeature(Window.FEATURE_NO_TITLE);
Run Code Online (Sandbox Code Playgroud)

在运行Android 2.3.5(Gingerbread)的旧设备中.我正在使用v7支持库.

当我将其更改为使用时,错误已得到修复:

supportRequestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
Run Code Online (Sandbox Code Playgroud)

(这是在我的super.onCreate调用修复程序之后).请参阅https://developer.android.com/reference/android/support/v7/app/ActionBarActivity.html#supportRequestWindowFeature(int)上的文档

因此,它可能更多是误导性错误消息的情况.


小智 7

如果您将活动用作Dialog(使用Theme.Dialog),请确保扩展Activity而不是ActionBarActivity(使用Android Studio向导为您提供的默认值).然后你可以使用

requestWindowFeature(Window.FEATURE_NO_TITLE);
Run Code Online (Sandbox Code Playgroud)

要么

supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
Run Code Online (Sandbox Code Playgroud)

super.onCreate()...之后


小智 7

请检查您的课程是从Activity或ActionBarActivity扩展.如果您使用的是ActionBarActivity,请使用Activity.


归档时间:

查看次数:

85941 次

最近记录:

6 年,1 月 前