2011-06-03 56 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); 
相關問題