1
public class MyPreferences extends PreferenceActivity {

    @Override
    public void onCreate( Bundle savedInstanceState ) {
        super.onCreate( savedInstanceState );
        requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
        requestWindowFeature(Window.FEATURE_PROGRESS);
        ...
        setProgressBarIndeterminateVisibility(true);
        setProgressBarVisibility(true);
    }
}

在第一次 requestWindowFeature() 调用中,这会抛出:

    ERROR/AndroidRuntime(16406): Caused by: android.util.AndroidRuntimeException: requestFeature() must be called before adding content

显然,此时我还没有添加任何内容。PreferenceActivity 是否在 super.onCreate() 期间更改了某些状态,导致任何孩子认为它有?还是我应该使用一些清单属性?

我还应该指出,我在没有 xml 的情况下创建这些首选项,即完全以编程方式,但代码片段足以表明问题似乎在任何一种情况下都会出现。

4

1 回答 1

4

问题是您在 requestWindowFeature() 之前有 super.onCreate()。由于这是一个 PreferenceActivity,屏幕上有一些标准项目是在 onCreate() 中创建的。

只需将 onCreate() 移到 requestWindowFeature() 下方即可。

于 2011-10-11T20:40:05.683 回答