Android Resources converting to string TypedValue warning

后端 未结 6 999
旧巷少年郎
旧巷少年郎 2020-12-13 23:12

Ok I\'m looking right past something here..

Every time I\'m in my app and I change activities, logcat reports series of warnings:

02-04 14:42:36.524:         


        
相关标签:
6条回答
  • 2020-12-13 23:50

    Check to see if you don't have:-

    <TextView android:text="@+id/labelText"/>
    

    in your resource file.

    0 讨论(0)
  • 2020-12-13 23:59

    I've discovered that this warning is also outputted when specifying a plurals string from a widget that requires parameters.

    For instance:

    <plurals name="song_count">
        <item quantity="one">%d song in playlist</item>
        <item quantity="other">%d songs in playlist</item>
    </plurals>
    

    The warning will appear when inflating an activity that contains a widget referencing it:

    <TextView
        android:id="@+id/tv_total_songs"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@plurals/song_count" />
    

    You no doubt replace the string after inflating the views to set the correct parameters, e.g.:

    playlistSongCount.setText(
            getResources().getQuantityString(
                R.plurals.song_count,
                songCount,
                songCount));
    

    The obvious solution here is to remove the android:text attribute from the layout as it has no purpose.

    0 讨论(0)
  • 2020-12-14 00:01

    Problem in android:text="@+id/fooText

    Try change in your .xml this:

    <TextView 
        android:id="@+id/foo" 
        android:text="@+id/fooText"/>
    

    To this:

    <TextView 
        android:id="@+id/foo" 
        android:text=""/>
    
    0 讨论(0)
  • 2020-12-14 00:02

    You are using a bool resource where a string is expected.

    You can find which resource is being used incorrectly by opening your generated R.java file and searching for the resource IDs from the logcat message:

    0x7f08002b
    0x7f08002c
    0x7f08002d
    

    All three should be from your bool.xml file (the "t=0x12" in the warning message means the resources are TYPE_INT_BOOLEAN).

    Then, find where those resource IDs are being used in your project (probably a layout xml, but could be anywhere) and make sure the types match.

    Here's an example of a TextView that would generate that log message. If in my res/values/bool.xml I have:

    <resources>
        <bool name="foo_flag">false</bool>
    </resources>
    

    I can incorrectly refer to it from a a layout xml file:

    <TextView android:id="@+id/foo"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="@bool/foo_flag"></TextView>
    

    When I run that app, I'll get the warning message since "text" expects a string resource, not a bool (my app appears as expected though since the flag is converted to the string "false").

    Updated for Android Gradle 4.X:

    As of sometime by version 4.0.1 of the Android grade plugin this has changed. An R.java file is no longer generated. Instead An R.txt file is generated located somewhere like:

        build/intermediates/runtime_symbol_list/{variant}/R.txt
    
    0 讨论(0)
  • 2020-12-14 00:07

    In my case the problem was in ListPreference default value. Even if you type it as String (for example "10") it will be interpreted as int and then converted to String and thus complaining.

    For example, this will give a warning:

    <ListPreference
         android:defaultValue="10"
         ...
    />
    

    but this will not:

    <ListPreference
         android:defaultValue="@string/ten"
         ...
    />
    

    and define @string/ten in strings.xml as:

    <string name="ten" translatable="false">10</string>
    

    Dumb, but it gets rid of the warning.

    0 讨论(0)
  • 2020-12-14 00:10

    These warnings only occurred when a certain developer option was enabled.

    Device Settings > Developer options > Disable 'Enable view attribute inspection'

    0 讨论(0)
提交回复
热议问题