1. ホーム
  2. android

[解決済み] コンテンツを追加する前に requestFeature() をコールする必要があります。

2022-02-01 19:49:13

質問

カスタムタイトルバーを実装しようとしています。

以下は私のヘルパークラスです。

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);
        }
    }
}

ここではonCreate()の中で呼び出しています。

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

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

でも、エラーが出るんです。

requestFeature() must be called before adding content

解決方法は?

まあ、エラーメッセージのとおりにすればいいんだけどね。

を呼び出さないでください。 setContentView() 前に requestFeature() .

コメントで言われているように、両者とも ActionBarSherlockAppCompat ライブラリを使用する場合は requestFeature() の前に super.onCreate()