Android资源转换为stringTypedValue警告
好吧,我正在寻找这里的东西..
每当我在我的应用程序,我改变活动,logcat报告系列的警告:
02-04 14:42:36.524: WARN/Resources(1832): Converting to string: TypedValue{t=0x12/d=0x0 a=2 r=0x7f08002b} 02-04 14:42:36.524: WARN/Resources(1832): Converting to string: TypedValue{t=0x12/d=0x0 a=2 r=0x7f08002c} 02-04 14:42:36.524: WARN/Resources(1832): Converting to string: TypedValue{t=0x12/d=0x0 a=2 r=0x7f08002d}
其他应用程序不显示这样的警告。 这是一个pre-release / aapt压缩的东西吗?
您正在使用预期string的bool资源。
通过打开生成的R.java文件并从logcat消息中search资源ID,可以find错误使用的资源:
0x7f08002b 0x7f08002c 0x7f08002d
所有这三个都应该来自你的bool.xml文件(警告消息中的“t = 0x12”表示资源是TYPE_INT_BOOLEAN )。
然后,find你的项目中使用的资源ID(可能是一个布局xml,但可以在任何地方),并确保types匹配。
下面是一个可以生成日志消息的TextView的例子。 如果在我的res / values / bool.xml中有:
<resources> <bool name="foo_flag">false</bool> </resources>
我可以从一个布局xml文件错误地引用它:
<TextView android:id="@+id/foo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@bool/foo_flag"></TextView>
当我运行该应用程序,我会得到警告消息,因为“文本”期望一个string资源,而不是一个布尔(我的应用程序出现如预期的,虽然因为该标志被转换为string“假”)。
这些警告只发生在某个开发者选项被启用时。
设备设置>开发者选项>禁用“启用视图属性检查”
我发现在从需要参数的小部件中指定复数string时,也会输出此警告。
例如:
<plurals name="song_count"> <item quantity="one">%d song in playlist</item> <item quantity="other">%d songs in playlist</item> </plurals>
在对包含引用它的窗口小部件的活动进行膨胀时,将显示警告:
<TextView android:id="@+id/tv_total_songs" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@plurals/song_count" />
毫无疑问,在膨胀视图之后replacestring以设置正确的参数,例如:
playlistSongCount.setText( getResources().getQuantityString( R.plurals.song_count, songCount, songCount));
这里明显的解决scheme是从布局中删除android:text
属性,因为它没有任何用处。
检查你是否没有: –
<TextView android:text="@+id/labelText"/>
在你的资源文件中。
问题在android:text="@+id/fooText
尝试改变你的.xml这个:
<TextView android:id="@+id/foo" android:text="@+id/fooText"/>
对此:
<TextView android:id="@+id/foo" android:text=""/>