android在設(shè)計View類時,為了能儲存一些輔助信息,設(shè)計一個一個setTag/getTag的方法。這讓我想起在Winform設(shè)計中每個Control同樣存在一個Tag。
今天要說的是我最近學(xué)習(xí)android遇見的setTag的坑。一般情況下我們只需要使用唯一參數(shù)的setTag方法。但有時我們需要存儲多個數(shù)據(jù),所以這個時候我們就需要使用帶key的重載。
文檔是描述:“ The specified key should be an id declared in the resources of the application to ensure it is unique (see the ID resource type). Keys identified as belonging to the Android framework or not associated with any package will cause an IllegalArgumentExceptionto be thrown.”
這里說明必須保證key的唯一,但是如果我們使用java常量定義key(private static final int TAG_ID = 1;)這樣你任然會遇見如下錯誤:
java.lang.IllegalArgumentException: The key must be an application-specific resource id
正確的解決方案是:
在res/values/strings.xml中定義這個key常量,如下:
<resources> <item type="id" name="tag_first"></item> <item type="id" name="tag_second"></item> </resources>
使用如下:
imageView.setTag(R.id.tag_first, "Hello"); imageView.setTag(R.id.tag_second, "Success");
以上就是對Android setTag方法的key問題的解決辦法,謝謝大家對本站的支持!
新聞熱點
疑難解答
圖片精選