首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在添加内容之前必须调用requestFeature()

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

Stack Overflow用户
提问于 2010-11-23 04:54:07
回答 4查看 124.1K关注 0票数 144

我正在尝试实现一个自定义标题栏:

下面是我的Helper类:

代码语言:javascript
复制
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()中调用它的地方:

代码语言:javascript
复制
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setupUI();
}

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

但是我得到了一个错误:

代码语言:javascript
复制
requestFeature() must be called before adding content
EN

回答 4

Stack Overflow用户

发布于 2016-07-07 21:14:01

对于SDK版本23及更高版本,如果您使用AppCompatActivity扩展您的activity,则会抛出相同的RuntimeException。如果您的活动直接从活动派生,则不会发生这种情况。

正如在https://code.google.com/p/android/issues/detail?id=186440中提到的,这是谷歌的一个已知问题

为此提供的解决方法是使用supportRequestWindowFeature()方法,而不是使用requestFeature()。

如果它解决了你的问题,请投上赞成票。

票数 4
EN

Stack Overflow用户

发布于 2018-10-09 20:15:39

在我的例子中,我用Activity显示了DialogFragment。在这个对话框片段中,我像在DialogFragment remove black border中一样编写

代码语言:javascript
复制
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setStyle(STYLE_NO_FRAME, 0)
}

override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
    super.onCreateDialog(savedInstanceState)

    val dialog = Dialog(context!!, R.style.ErrorDialogTheme)
    val inflater = LayoutInflater.from(context)
    val view = inflater.inflate(R.layout.fragment_error_dialog, null, false)
    dialog.setTitle(null)
    dialog.setCancelable(true)
    dialog.setContentView(view)
    return dialog
}

删除onCreate()中的setStyle(STYLE_NO_FRAME, 0)或更改/删除onCreateDialog。因为对话框设置将在创建对话框后更改。

票数 2
EN

Stack Overflow用户

发布于 2010-11-23 05:01:17

难道这个错误不能准确地告诉您出了什么问题吗?在调用setContentView之后调用requestWindowFeaturesetFeatureInt

顺便问一下,为什么要调用setContentView两次?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4250149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档