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