2011-09-11 61 views
0

這是針對Android的,但我相信這是一個普通的Java問題,所以我將它標記爲這樣。R.array是一個類,但不是一個對象?

我想在R.array上使用反射從列表中獲取數組。該陣列被命名爲stringArraySubCategoryX其中X替換爲數字0到20這是我的代碼,但我遇到了一個問題:

Field subCatField = R.array.class.getField("stringArraySubCategory" + position); 
subCatergorySpinner.setAdapter(ArrayAdapter.createFromResource(InfoActivity.this, subCatField.getInt(R.array), android.R.layout.simple_spinner_item)); 

問題部分是subCatField.getInt(R.array)位,這是應該返回所選數組的資源int值。但是Field.getInt(arg)的論點是一個對象。我檢查了R.array,這說public static final class array,但似乎沒有被接受。

我在做什麼錯?

回答

1
subCatField.getInt(null) 

是你在找什麼。當然,stringArraySubCategoryXstatic

但是......你說的是:「我試圖在R.array上使用反射來從列表中獲取數組。

那是怎麼回事int

subCatField.get(null) 

將返回靜態Object包含在Field

+0

哦,對了!那是因爲數組是靜態的,對嗎? – AlbeyAmakiir

+0

正確 - 如果數組是「靜態」,則不需要該類的實例,而是傳遞「null」。 –

+1

在回答你自己的問題時:Android有一個名爲R的對象,它具有靜態的int變量,它們代表所有不是代碼本身的資源(本地化的字符串,圖像等)。整數以每個資源的文件名或xml name =命名。我的strings.xml中有一個字符串數組,但R中的資源標識符是Context.getResources(int)用於獲取資源本身的int。例如。 getResources(R.array.stringArraySubCategory7) – AlbeyAmakiir

相關問題