使用strings.xml中的字符串数组填充字符串[]的问题

时间:2011-06-03 17:21:25

标签: android arrays string resources

编辑:哇......不知怎的,我用另一个问题替换了这个问题,很高兴有这个回滚功能

此特定问题涉及我previous question

中的吸气剂
public class Impacts extends Activity implements View.OnClickListener
{
    boolean[] impactsb = new boolean[] {false, false, false, false, false, false, false, false}-
    public void onCreate (Bundle savedInstanceState)
    {
    super.onCreate(savedInstanceState)
...

    String getImpacts ()
    {
    String[] impactsn = new String[length];
    Resources myResources = this.getResources();
    impactsn = myResources.getStringArray(R.array.impacts);
    StringBuilder impactss = new StringBuilder();
    for (int i = 0; i < length; i ++)
        {
        if (impactsb[i])
            impactss.append(impactsn[i] + " | ");
        }
    if (String.valueOf(impactss) != "")
        impactss.insert(0, "Impacts: ");
    return String.valueOf(impactss);
    }

有这些错误:

Impacts(ContextWrapper).getResources() line: 80
Impacts.getImpacts() line: 78

以下代码的最后一个括号:

@Override
public Resources getResources()
{
    return mBase.getResources();
}

和这行代码分别为:

impactsn = getResources().getStringArray(R.array.impacts);

这是我的strings.xml(无论如何相关的部分)

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="impacts">
        <item>GasOilChemical Pollutants</item>
        <item>Ghost Fishing</item>
        <item>Marsh Damage</item>
        <item>Navigational Hazard</item>
        <item>Shellfish Damage</item>
        <item>Waste Pollution</item>
        <item>Wildlife Entanglement</item>
        <item>Other</item>
    </string-array>
</resources>

我最初的第一项是:

<item>Gas/Oil/Chemical Pollutants</item>

但修正了这一点,希望如果不解决问题,至少会改变错误。但不,同样的错误。任何帮助都会非常感激,我对数组的使用并不十分熟悉,特别是为数组获取资源。

Logcat for exception:

06-05 23:02:30.792: ERROR/AndroidRuntime(3905): FATAL EXCEPTION: main
06-05 23:02:30.792: ERROR/AndroidRuntime(3905): java.lang.NullPointerException
06-05 23:02:30.792: ERROR/AndroidRuntime(3905): at android.content.ContextWrapper.getResources(ContextWrapper.java:80)
06-05 23:02:30.792: ERROR/AndroidRuntime(3905): at com.citsci.mardeb.Impacts.getImpacts(Impacts.java:79)

3 个答案:

答案 0 :(得分:4)

我知道这是糟糕的编码,提前道歉。所以为了解决这个问题,我搬了

String[] impactsn;
impactsn = getResources().getStringArray(R.array.impacts);

到我的主要活动并使其静止。现在我在我的Impacts类中将其称为(MainActivity).impactsn[]

我知道这不是你应该如何在类之间共享对象,但它似乎是迄今为止最简单的方法。这是另一个原因,我后悔我决定让我的所有标签分开活动。如果您对如何在不使用静态引用的情况下修复此代码有任何建议或建议,或者为什么我的所有选项卡应该是相同的活动,请提示。请加入。

答案 1 :(得分:1)

建议不要提前定义数组,直接使用而不定义变量

mAutoComplete.setAdapter (new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, getResources().getStringArray(R.array.OmskStreets)));

以及更多......

中的

private String[] mStreets = null;

和onCreate方法

mStreets = getResources().getStringArray(R.array.OmskStreets);

答案 2 :(得分:0)

在onCreate()之前不应该定义关于UI的任何内容。

此外,以下是一个糟糕的编码示例,但它可以工作。

public void onCreate(Bundle icicle){
     super.onCreate(icicle);
...
...
...
     COUNTRIES  = getResources().getStringArray(R.array.COUNTRIES_ARRAY);
相关问题