XMLにdrawable配列を書いてgetIntArray()から読み込めない
drawableリソースを配列で読み込もうとこんな感じで書いたのですが
- @drawable/g_blue
- @drawable/g_green
- @drawable/g_lightblue
- @drawable/g_pink
- @drawable/g_purple
- @drawable/g_red
- @drawable/g_yellow
Resouces.getIntArray()で読み込むと何故か帰ってきたint[]にはすべて0が入っていて、期待通りの動きをしない。ビルドはできるのに…
対策としては以下のようにやるといいらしい。
TypedArray ar = getResources().obtainTypedArray(R.array.res_ids_icon); int[] resIds = new int[ar.length()]; for (int i = 0; i < resIds.length; i++) { resIds[i] = ar.getResourceId(i, 0); } ar.recycle();
というか、以下のページの最後に書いてあるように、integer-arrayタグではなくてただのarrayにして、TypedArrayのgetDrawable()で取るのが標準みたいですね。
http://developer.android.com/intl/ja/guide/topics/resources/more-resources.html#IntegerArray
Reference
http://www.anddev.org/xml_integer_array_resource_references_getintarray-t9268.html