且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

requestFeature()必须在添加内容之前调用

更新时间:2022-10-18 19:28:40

好了,只是做了错误消息告诉你。

不要叫的setContentView() requestFeature()

注意:

正如评论所说,对于 ActionBarSherlock AppCompat 库,它需要调用 requestFeature() super.onCreate()

I am trying to implement a custom titlebar:

Here is my Helper class:

import android.app.Activity;
import android.view.Window;

public class UIHelper {
    public static void setupTitleBar(Activity c) {
        final boolean customTitleSupported = c.requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);

        c.setContentView(R.layout.main);

        if (customTitleSupported) {
            c.getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.titlebar);
        }
    }
}

Here is where I call it in onCreate():

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setupUI();
}

private void setupUI(){
     setContentView(R.layout.main);
     UIHelper.setupTitleBar(this);
}

But I get the error:

requestFeature() must be called before adding content

Well, just do what the error message tells you.

Don't call setContentView() before requestFeature().

Note:

As said in comments, for both ActionBarSherlock and AppCompat library, it's necessary to call requestFeature() before super.onCreate()