2011-09-11 17 views
0

これは、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と言われますが、それは受け入れられないようです。

私は間違っていますか?

答えて

1
subCatField.getInt(null) 

あなたは何を探しているのですか? stringArraySubCategoryXはもちろん、static提供。

しかし、あなたは... "リストから配列を取得するためにR.arrayで反射を使用しようとしています。"

方法はintということでしょうか?

subCatField.get(null) 

は右Field

+0

ああに含まれる静的Objectを返します!なぜなら、配列は静的であるからです。 – AlbeyAmakiir

+0

正しい - 配列の場合、 'static'あなたはクラスのインスタンスを必要としない、代わりに' null'なのでを渡します。 –

+1

あなた自身の質問に答えて:Androidは、コード自体ではないすべてのリソース(ローカライズされた文字列、画像など)を表すstatic int変数を持つRというオブジェクトを持っています。 intは、各リソースのファイル名またはxml name =の後に付けられます。 strings.xmlに文字列配列がありますが、Rのリソース識別子はContext.getResources(int)がリソースそのものを取得するために使うintです。例えば。 getResources(R.array.stringArraySubCategory7) – AlbeyAmakiir

関連する問題