6

以下是 LogCat 的摘录:

04-04 19:51:51.270: INFO/ActivityManager(57): Starting activity: Intent { cmp=com.example.app/.Preferences }
04-04 19:51:51.710: WARN/Resources(1081): Converting to string: TypedValue{t=0x10/d=0x0 a=-1}
04-04 19:51:51.740: WARN/Resources(1081): Converting to string: TypedValue{t=0x10/d=0x0 a=-1}
04-04 19:51:51.761: WARN/Resources(1081): Converting to string: TypedValue{t=0x10/d=0x79e a=-1}
04-04 19:51:51.800: WARN/Resources(1081): Converting to string: TypedValue{t=0x10/d=0x5a0 a=-1}
04-04 19:51:51.810: WARN/Resources(1081): Converting to string: TypedValue{t=0x10/d=0x5 a=-1}
04-04 19:51:51.830: WARN/Resources(1081): Converting to string: TypedValue{t=0x10/d=0xa a=-1}
04-04 19:51:51.840: WARN/Resources(1081): Converting to string: TypedValue{t=0x10/d=0xa a=-1}
04-04 19:51:51.860: WARN/Resources(1081): Converting to string: TypedValue{t=0x10/d=0x1e a=-1}
04-04 19:51:51.870: WARN/Resources(1081): Converting to string: TypedValue{t=0x10/d=0x1e a=-1}
04-04 19:51:53.450: INFO/ActivityManager(57): Displayed activity com.example.app/.Preferences: 2061 ms (total 2061 ms)
4

3 回答 3

12

你从 logcat 得到的TypedValue可以这样解释:

  • t==> 输入(0x10= TYPE_INT_DEC
  • d==> 实际数据(由 指定t
  • a==> 有关值来自何处的附加信息;只为字符串设置。
  • r==> 最终资源 ID(如果您传递了文字值,则未设置)

所以我想你必须寻找你把它放在期望字符串的地方的整数。

于 2011-04-05T17:06:49.427 回答
8

这个问题也困扰着我;我发现 logcat 警告来自android:defaultValue,而不是<item>数组中的条目。您可以通过在 xml 文件中创建字符串条目来解析这些消息(我使用 /xml/constants.xml,但命名约定由您决定,并不重要),如下所示:

 <resources>
      <string name="someValueA">12345</string>
      <string name="someValueB">0</string>
      <string name="someValueC">6789</string>
 </resources>

即使这些值是整数,由于您将它们声明为字符串,Android 将它们视为字符串,因此不会生成 logcat 警告。

在您的代码中,在您需要放置这些值的任何地方适当地引用@string/someValueAR.string.someValueA(或 B 或 C 等)。对于ListPreferencexml 文件中的 a ,您将使用如下内容:

 <ListPreference
       android:defaultValue="@string/someValueA"
       android:dialogTitle="Some dialog title"
       android:entries="@array/someNamesA"
       android:entryValues="@array/someValuesA"
       android:key="some_preference"
       android:summary="Your summary text"
       android:title="Some Title" />

一旦找到导致问题的条目,解决它并不可怕。将 logcat 消息中的“d”值从十六进制转换为十进制应该指向正确的方向。例如,0x5a0 是 1440,因此您应该能够识别在代码中使用值 1440 的位置。

于 2014-02-20T23:54:10.653 回答
1

当我在以下位置启用“启用视图属性检查”选项时遇到了这个问题:

Settings > Developer Options > Debugging

一旦我关闭该设置,设备就会停止向 logcat 发送这些警告。

于 2016-02-09T08:13:54.593 回答