これは、Androidのためですが、私はそれが一般的なJavaの質問だと考えているので、私はそのようにラベル付けしています。R.arrayはクラスですがオブジェクトではありませんか?
私は、リストから配列を取得するためにR.arrayでの反射を使用しようとしています。配列は、Xは、これが私のコードで0から20までの数に置き換えている場合stringArraySubCategoryX
という名前が、私はこの問題に遭遇している。問題の一部を返すことになっているsubCatField.getInt(R.array)
ビット、ある
Field subCatField = R.array.class.getField("stringArraySubCategory" + position);
subCatergorySpinner.setAdapter(ArrayAdapter.createFromResource(InfoActivity.this, subCatField.getInt(R.array), android.R.layout.simple_spinner_item));
選択された配列のリソースint値。しかし、Field.getInt(arg)
の引数はObjectです。私はR.arrayをチェックしました。それはpublic static final class array
と言われますが、それは受け入れられないようです。
私は間違っていますか?
ああに含まれる静的
Object
を返します!なぜなら、配列は静的であるからです。 – AlbeyAmakiir正しい - 配列の場合、 'static'あなたはクラスのインスタンスを必要としない、代わりに' null'なのでを渡します。 –
あなた自身の質問に答えて:Androidは、コード自体ではないすべてのリソース(ローカライズされた文字列、画像など)を表すstatic int変数を持つRというオブジェクトを持っています。 intは、各リソースのファイル名またはxml name =の後に付けられます。 strings.xmlに文字列配列がありますが、Rのリソース識別子はContext.getResources(int)がリソースそのものを取得するために使うintです。例えば。 getResources(R.array.stringArraySubCategory7) – AlbeyAmakiir