2011-06-03 61 views
2

编辑:哇......不知何故,我代替这个问题有另外一个我问,很高兴有这样的回滚功能问题灌装的String []从strings.xml中字符串数组

这个具体问题涉及从我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 

最终布拉奇下面的代码的KET:

@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> 

bu t解决了这个问题,希望如果不解决问题,至少会改变错误。但不是,同样的错误。任何帮助都将得到广泛的赞赏,我不太熟悉数组的使用,特别是为数组获取资源。

logcat的异常:

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) 
+0

@hooraygradschool:是对getImpacts()一个活动或一个辅助类的方法部分? – Squonk 2011-06-03 17:34:03

+0

它是一个扩展活动的类的一部分,我将它添加到响应您评论的顶部。 – 2011-06-03 17:41:13

+0

@hooraygradschool:好的,如果它是您的Impacts Activity的一种方法,那么为什么您有getResources()的覆盖?只需使用getResources()应该可以正常工作 - 尝试注释掉重写的getResources()方法。 – Squonk 2011-06-03 17:48:56

回答

4

我知道这是编码差,提前道歉。所以要解决这个问题,我把

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

我的主要活动,并使其静态。现在我在我的影响类中称为(MainActivity).impactsn[]

我知道这不是你应该如何在类之间共享对象,但它似乎是目前为止最简单的方法。这是我为自己的决定做出所有标签单独活动的另一个原因。如果您对如何解决这一代码的任何建议或意见,而不使用静态引用或原因,我所有的标签应该是相同的活动,请插入内容。

0

的onCreate前不宜定义有关UI任何东西() 。

此外,下面是一个贫穷的编码例,但它的作品。

public void onCreate(Bundle icicle){ 
    super.onCreate(icicle); 
... 
... 
... 
    COUNTRIES = getResources().getStringArray(R.array.COUNTRIES_ARRAY); 
+0

'super.onCreate(bundle)'在我的代码中的省略号内。我已经添加了它,所以很明显。即时通讯不知道这个答案增加了我的问题。 – 2011-07-11 21:55:36

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);