Robolectric,在dimens.xml中引用浮点类型的膨胀布局会抛出NumberFormatException:对于输入字符串:“@ 0”

时间:2013-12-03 01:01:42

标签: android unit-testing robolectric android-testing

当尝试使用以下xml代码片段对res / layout / some_layout.xml进行膨胀时,Roblectric会抛出一个Excpetion:

<LinearLayout
    android:id="@+id/some_linearlayout"
    android:layout_width="0dip"
    android:layout_height="wrap_content"
    android:layout_weight="@dimen/some_value" 
    android:orientation="horizontal" />

这是dimens.xml中的值

  <item name="some_value" format="float" type="dimen">0</item>

但是在尝试扩充res / layout / some_layout.xml

时出现以下错误
java.lang.NumberFormatException: For input string: "@0"
    at java.lang.Float.parseFloat(Float.java:422)
    at android.content.res.TypedArray.$$robo$$TypedArray_42b1_getFloat(TypedArray.java:287)
    at android.content.res.TypedArray.getFloat(TypedArray.java)
    at android.widget.LinearLayout$LayoutParams.$$robo$$LayoutParams_5d9a___constructor__(LinearLayout.java:1813)
    at android.widget.LinearLayout$LayoutParams.<init>(LinearLayout.java:1809)
    at android.widget.LinearLayout.$$robo$$LinearLayout_e83a_generateLayoutParams(LinearLayout.java:1721)
    at android.widget.LinearLayout.generateLayoutParams(LinearLayout.java)
    at android.widget.LinearLayout.generateLayoutParams(LinearLayout.java:58)
    at android.view.LayoutInflater.$$robo$$LayoutInflater_1d1f_rInflate(LayoutInflater.java:748)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java)

一些重要信息:

1)如果我更换&#34; @ dimen / some_margin&#34;这个错误就消失了。在some_layout.xml中使用&#34; 0&#34; (两者都没有引号)。

2)该应用程序成功地在模拟器和真实设备上膨胀布局。

3)我可以使用Robolectric来扩充其他布局(但他们不会在dimens.xml中使用浮点类型)。

4)就我的目的而言,尺寸必须是float类型。

我认为这个问题与dimens.xml中的some_value是浮点类型有关。

任何人都可以了解为什么抛出此异常?使用float类型dimens.xml值来扩展此布局的解决方案也将非常受欢迎。

0 个答案:

没有答案