【问题标题】:Android: how can I create an array of preferences with context?Android:如何创建带有上下文的首选项数组?
【发布时间】:2012-09-15 21:14:24
【问题描述】:

目前我有一些测试代码,开头是这样的:

    CheckBoxPreference cb1 = new CheckBoxPreference(this);
    CheckBoxPreference cb2 = new CheckBoxPreference(this);

我想要实现的是一个 CheckBoxPreferences 数组,我希望它看起来像这样:

private CheckBoxPreference[] mFilterSubjects = new CheckBoxPreference(this)[24];

但是,这会产生错误“表达式的类型必须是数组类型,但它解析为 CheckBoxPreference”。以下代码编译正确:

private CheckBoxPreference[] mFilterSubjects = new CheckBoxPreference[24];

但是,如果我尝试对数组的元素做某事,例如mFilterSubjects[0],我得到一个 NullPointerException,因为没有上下文。

如何更改我的声明以使其正常工作,换句话说,如何使用上下文声明数组的每个元素?

【问题讨论】:

    标签: android arrays sharedpreferences


    【解决方案1】:

    你只是创建一个空数组来保存 24 个元素,这就是你得到空指针的原因:

    private CheckBoxPreference[] mFilterSubjects = new CheckBoxPreference[24];
    

    您需要向该数组添加首选项:

    for(int i = 0; i < 24; i++){
        mFilterSubjects[i] = new CheckBoxPreference(this);
    }
    

    【讨论】:

    • 非常感谢您提供如此及时的答复。这解决了问题。不过,“新”两次似乎很奇怪。
    猜你喜欢
    • 2013-01-17
    • 1970-01-01
    • 1970-01-01
    • 2016-04-07
    • 1970-01-01
    • 1970-01-01
    • 2013-04-13
    • 2011-11-13
    • 1970-01-01
    相关资源
    最近更新 更多