android – How to set integer tag to a widget in xml layout file?-ThrowExceptions

Exception or error:

I have simple layout, but I can only set string tag. How to set integer tag?

<ImageView
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:tag="1"
  android:src="@drawable/image" />

UPDATE

I found out how to set Integer tags in xml layout. We need to specify an integer variable in any xml resource file. That should look like that:

res/values/value.xml:

<?xml version="1.0" encoding="UTF-8"?>
<resources>
<integer name="int1">15</integer>
<integer name="int2">1</integer>
</resources>

And now we are free to use “@integer/int1” or “@integer/int2” as tags for our xml widgets, for example:

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:tag="@integer/int2"
android:src="@drawable/image" />

However, in my case I preferred to set tag programmatically 🙂

How to solve:

In xml you can only set String. But in code you can use View.setTag(int value); because it takes Object. To read a value you need to cast it to Integer int value = (Integer)view.getTag();

###

From the author’s edit I attempted to use @integer/int2 to set the tag as an integer, but it still seems that getTag() is returning the tag as a String (at least in Jellybean). Integer.parseInt(String) can convert a String to an Integer and @integer/int2 can validate that your tag is a proper Integer. So if you want to put an Integer in a tag through XML that is probably the best route. Downside, since it uses parseInt it likely takes a little more time than having it stored as a int the whole time.

###

I used the following to setup the tag in xml and handle it later in code:

<?xml version="1.0" encoding="UTF-8"?>
<resources>
<string name="item_tag">1</string>
</resources>

<!-- TextView with Tag -->
<TextView
android:id="@+id/item_with_tag"
android:tag="@string/item_tag"/>

// retrieve the tag
int itemTag = Integer.valueOf((String) textView.getTag()); // itemTag == 1

###

Supply a tag for this view containing a String, to be retrieved later with View.getTag() or searched for with View.findViewWithTag().

Must be a string value, using '\\;' to escape characters such as '\\n' or '\\uxxxx' for a unicode character.

For more information go to android:tag

Leave a Reply

Your email address will not be published. Required fields are marked *