从Android中的dimens.xml资源文件获取整数值

我有一个EditText这是十进制,我设置其长度使用android:maxLength属性在xml:

<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" /> 

因为它的长度不仅要用在UI xml文件中,还要用在java类中,也许还有其他一些地方,所以我希望在将来更新这个值时避免出现问题,所以我想把长度集中在dimens.xml资源文件如下:

dimens.xml

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

从一个Java类我需要读取这个值,所以我执行:

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

但我可以注意到没有方法getInt(),只有getFloat():

  int digitsBefore = typedValue.getFloat(); 

所以我需要得到它作为整数….如何做到这一点? 当然,也许我可以使用getFloat(),然后转换为整数….但我不知道这是否是一个优雅的方式来做到这一点…所以有什么想法?

更新:Oooppssss我犯了一个错误。 它是:int quantity = typedValue.getFloat();

代替:

 int digitsBefore = typedValue.getFloat(); 

为什么不把整数存储在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" 

你不需要TypedValue使用以下

(int) this.getResources().getDimension(R.integer.quantity_length) ;

用你的例子,你为什么不使用这种方法?

XML

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

JAVA

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

使用:

 Integer.ParseInt(digitsBefore);