Java R.array是类而不是对象?
这是针对Android的,但我相信这是一个一般的Java问题,所以我给它贴上了这样的标签 我试图使用R.array上的反射从列表中获取一个数组。这些数组被命名为Java R.array是类而不是对象?,java,android,Java,Android,这是针对Android的,但我相信这是一个一般的Java问题,所以我给它贴上了这样的标签 我试图使用R.array上的反射从列表中获取一个数组。这些数组被命名为stringArraySubCategoryX,其中X被替换为0到20之间的数字。这是我的代码,但我遇到了一个问题: Field subCatField = R.array.class.getField("stringArraySubCategory" + position); subCatergorySpinner.setAdapter
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));
问题部分是子字段.getInt(R.array)
位,它应该返回所选数组的资源int值。但是Field.getInt(arg)
的参数是一个对象。我检查了R.array,上面写着公共静态最终类数组
,但它似乎不被接受
我做错了什么
subCatField.getInt(null)
这就是你要找的。当然,前提是stringArraySubCategoryX
是static
然而。。。您声明:“我试图使用R.array上的反射从列表中获取一个数组。”
这是一个怎样的int
subCatField.get(null)
将返回
字段中包含的静态对象
正确-如果数组是静态的
,则不需要类的实例,而是传递null
。回答您自己的问题:Android有一个名为R的对象,该对象具有静态int变量,表示您的所有资源,而不是代码本身(本地化字符串、图像等)。int以每个资源的filename或xml name=命名。我在strings.xml中有一个字符串数组,但是R中的资源标识符是Context.getResources(int)用来获取资源本身的int。例如getResources(R.array.StringArraySubcategoriy7)啊。明白了。感谢您的解释(我还没有做过任何android编程…虽然我真的应该做,只是为了熟悉它)