Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java R.array是类而不是对象?_Java_Android - Fatal编程技术网

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

这是针对Android的,但我相信这是一个一般的Java问题,所以我给它贴上了这样的标签

我试图使用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));
问题部分是
子字段.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编程…虽然我真的应该做,只是为了熟悉它)