gpt4 book ai didi

java - android.util.AndroidRuntimeException : requestFeature() must be called before adding content

转载 作者:IT老高 更新时间:2023-10-28 11:48:51 31 4
gpt4 key购买 nike

我收到此 android.util.AndroidRuntimeException: requestFeature() must be called before added content 错误。正如您在下面的代码中看到的,requestWindowFeature(Window.FEATURE_NO_TITLE); 行位于 setContentView(R.layout.mainmenu); 行之前。这个 onCreate() 代码在我的每一个 Activity 中都是相同的格式,直到现在我从来没有遇到过问题。自从我更新到 ADT 22 以来,到处都出现了很多随机错误。我已经清除了很多这些错误,这是我最新的一个。

我可以做些什么来修复这个错误?

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.mainmenu);

日志猫

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 新版本的其他可能解决方案

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

<application
...
android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen" >
...
</application>

使用 Activity 主题的好处如下:

  • 与以编程方式设置标志相比,它更易于维护且不易出错。
  • 它会导致更流畅的 UI 转换,因为系统在实例化您的应用的主要 Activity 之前拥有呈现您的 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 标志(例如,通过导航离开 Activity),如果您想再次隐藏这些栏,您的应用需要重置它们。见 Responding to UI Visibility Changes有关如何监听 UI 可见性变化以便您的应用能够做出相应响应的讨论。
  • 设置 UI 标志的位置会有所不同。如果您在 Activity 的 onCreate() 方法中隐藏系统栏并且用户按下 Home,系统栏将重新出现。当用户重新打开 Activity 时,不会调用 onCreate(),因此系统栏将保持可见。如果您希望系统 UI 更改在用户导航进出您的 Activity 时保持不变,请在 onResume() 或 onWindowFocusChanged() 中设置 UI 标志。
  • setSystemUiVisibility() 方法只有在调用它的 View 可见时才有效。
  • 离开 View 会导致使用 setSystemUiVisibility() 设置的标志被清除。

关于java - android.util.AndroidRuntimeException : requestFeature() must be called before adding content,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16939814/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com