4

xmlでいくつかの整数値を宣言しましたが、クラスの値を使用してオブジェクトの配列サイズを定義する必要があります。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!--     Default Object Count -->
    <item format="integer" name="item1" type="integer">3</item>
    <item format="integer" name="item2" type="integer">1</item>
    <item format="integer" name="item3" type="integer">1</item>
</resources>

私はクラスで上記の値を次のように使用しています

public class InitialiseObjects {
    // For now static number of objects initialized
    private String TAG = "INIT_OBJECTS";
    int ITEM1_COUNT = R.integer.item1;
    int ITEM2_COUNT = R.integer.item2;
    int ITEM3_COUNT = R.integer.item3;

    private Item1[] item1Objs = new Item1[ITEM1_COUNT];
    private Item2[] item2Objs = new Item2[ITEM2_COUNT];
    private Item3[] item3Objs = new Item3[ITEM3_COUNT];
}

アイテム1、2、3のITEM*_COUNTはそれぞれ3,1,1になると思います。ただし、それぞれ2131034112、2131034113、2131034114を取得します

ここで何が問題になっていますか?

Android2.2[API-8]が使用されています

4

3 に答える 3

13

R.integer.item1はリソースの ID であるため、非常に大きな任意の整数です。

あなたが探している値は getContext().getResources().getInteger(R.integer.item1);

したがって、静的コードでそれらを取得することはできません。

コードで遅延初期化を使用する必要があります。

private Item1[] item1Objs;
public Item1[] getItem1Array(Context context) {
  if (item1Objs == null) {
     int count = context.getResources().getInteger(R.integer.item1);
     item1Objs = new Item1[count];
     }
  return item1Objs;
}
于 2012-11-18T14:17:43.883 に答える
2

このようにしてください:

Resources res = getResources();
int maxSpeed = res.getInteger(R.integer.max_speed);

ここを参照してください:http://developer.android.com/guide/topics/resources/more-resources.html#Integer

于 2012-11-18T14:14:07.573 に答える
1

その理由は、任意の R.integer.* が生成された整数値であるためです。これは、xml で宣言された値に関連する ID のようなものです。

むしろ電話した方がいい

getResources().getInteger(R.integer.*);
于 2012-11-18T14:19:12.480 に答える