【问题标题】:How to show the indeterminate progress icon in a custom PreferenceActivity?如何在自定义 PreferenceActivity 中显示不确定的进度图标?
【发布时间】:2011-05-05 17:20:22
【问题描述】:
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 的情况下创建这些首选项,即完全以编程方式,但代码 sn-p 足以表明问题似乎在任何一种情况下都会出现。

【问题讨论】:

  • 请将您的 logcat 分成块。
  • 因为“复合”活动(PreferenceActivity、ListActivity)等自己管理标准视图组件,那么您对 ​​super.onCreate() 的怀疑可能是正确的(它正在设置内容视图)。尝试在请求窗口功能的行之后移动该行。
  • MisterSquonk 你明白了!虽然我快到了,但我实际上阻止了超级调用的位置,因为它在构造函数中是强制性的。我们在这里没有这种情况,但它仍然经常是第一行(或最后一行)。好吧,你生活和学习 - 谢谢。我怎样才能将答案奖励给你?

标签: android android-preferences preferenceactivity android-progressbar


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2011-10-13
    • 2019-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多