2015-01-05 4 views
8

でdimens.xmlリソースファイルから整数値を取得します。私は、10進数ですのEditTextを持っていると私はアンドロイド使用して、その長さを設定します。その長さが起こっているとアンドロイド

<EditText 
     android:id="@+id/quantity" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:ems="10" 
     android:inputType="numberDecimal" 
     android:singleLine="true" 
     android:maxLength="@integer/quantity_length" /> 

:XMLでのmaxLengthプロパティをUI xmlファイルだけでなく、Javaクラスや他の場所でも使用できるように、今後この値を更新するときに問題を避けたいので、dimens.xmlリソースファイルに長さを集中させたい次のようになります。

TypedValue typedValue = new TypedValue(); 
    this.getResources().getValue(R.integer.quantity_length, typedValue, true); 

が、私は何の方法のgetInt()、だけはgetFloat()がないことに気付くことができます。私は、この値を読む必要はJavaクラスから

<resources> 

    <!-- other things --> 

    <!-- Constants --> 
    <item name="quantity_length" format="integer" type="integer">10</item> 

    <!-- other things --> 

</resources> 

をdimens.xmlので、私は実行します。

int digitsBefore = typedValue.getFloat(); 

私は整数として取得する必要があります....どのようにこれを行うには?もちろん、おそらく私はgetFloat()を使用して整数にキャストすることができます....しかし、それはエレガントな方法であるかどうかわかりません...どのようなアイデアですか?

更新日: 私は間違いを犯しました。それは: int量= typedValue.getFloat();

代わりに:

int digitsBefore = typedValue.getFloat(); 
+1

あなたは 'getResources()。getDimens'を使用していない理由は? –

答えて

26

なぜRES/integers.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <integer name="quantity_length">12</integer> 
</resources> 

の整数を格納し、コードの値にアクセスしません

int myInteger = getResources().getInteger(R.integer.quantity_length); 

またはXMLで

android:maxLength="@integer/quantity_length" 
+0

素晴らしい!私はちょうど今getIntegerを使用して発見した;)多くのありがとう。また、別のファイル "integers.xml"ファイルを使用することをお勧めします。既存のdimens.xmlファイルを使用するよりも適していますか? – user1624552

+1

はい、整数を格納するためのもので、dimensは** dp **、** sp **などのディメンションを格納するためのものです。 – Marko

+0

は完全に同意します。 – user1624552

0

使用:

Integer.ParseInt(digitsBefore); 
1

あなたはTypedValue

(int) this.getResources().getDimension(R.integer.quantity_length)以下を使用する必要がいけません。

1

あなたの例では、この方法を使用しないでください。

XML

<integer name="quantity_length">10</integer> 

JAVA

getResources().getInteger(R.integer.quantity_length); 
1
int max = getContext().getResources().getInteger(R.integer.quantity_length);