Android_View.Tag()方法使用

Tag方法

void setTag(Object tag)

這個方法相對簡單讨便,如果只需要設(shè)置一個 tag,那么直接調(diào)用 setTag(Object tag) 取值:view.getTag();方法就可以輕松搞定

void setTag (int key, Object tag)

“ 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.”

IllegalArgumentException 的原因就在于 key 不唯一以政,那么如何保證這種唯一性呢?

我使用了private static final int TAG_ONLINE_ID = 1;用來當(dāng)做 Key 可是還是會報錯霸褒。但這是為什么呢?

/**
* Returns the tag associated with this view and the specified key.
*
* @param key The key identifying the tag
*
* @return the Object stored in this view as a tag
*
* @see# setTag(int, Object)
* @see# getTag()
*/
public Object getTag(int key) {
    if (mKeyedTags != null) return mKeyedTags.get(key);
    return null;
}

/**
* Sets a tag associated with this view and a key. A tag can be used
* to mark a view in its hierarchy and does not have to be unique within
* the hierarchy. Tags can also be used to store data within a view
* without resorting to another data structure.
*
* The specified key should be an id declared in the resources of the
* application to ensure it is unique (see the <a
* href={@docRoot}guide/topics/resources/more-resources.html# Id">ID resource type</a>).
* Keys identified as belonging to
* the Android framework or not associated with any package will cause
* an {@link IllegalArgumentException} to be thrown.
*
* @param key The key identifying the tag
* @param tag An Object to tag the view with
*
* @throws IllegalArgumentException If they specified key is not valid
*
* @see# setTag(Object)
* @see# getTag(int)
*/
public void setTag(int key, final Object tag) {
    // If the package id is 0x00 or 0x01, it's either an undefined package
    // or a framework id
    if ((key >>> 24) < 2) {
        throw new IllegalArgumentException("The key must be an application-specific "
                + "resource id.");
    }

    setKeyedTag(key, tag);
}

從源碼中可以看到盈蛮,key右移24位如果小于2就會拋出這個異常废菱,這個應(yīng)該和id的生成規(guī)則有關(guān)。

這樣來看key也是可以定義成一個常量的(測試了也確實(shí)可以)抖誉,只要保證這個移位大于2的規(guī)則就行殊轴。但是這樣寫不便于維護(hù),只是說是可行的袒炉,不建議這邊做旁理。

從源碼中注意到的另外一個問題是,setTag()中的tag是單獨(dú)存儲的我磁,保存在protected Object mTag;中孽文,而setTag(int key, final Object tag)的tags是保存在private SparseArray<Object> mKeyedTags;中的。

那么知道問題就好解決了:

最直接的方法就是在資源文件中添加一條記錄:

<item type="id" name="tag_first"></item>

可以添加到res/values/strings.xml或者res/values/ids.xml中夺艰,然后調(diào)用View.setTag(R.id.tag_first,"msg")即可芋哭。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市劲适,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌厢蒜,老刑警劉巖霞势,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件烹植,死亡現(xiàn)場離奇詭異,居然都是意外死亡愕贡,警方通過查閱死者的電腦和手機(jī)草雕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來固以,“玉大人墩虹,你說我怎么就攤上這事『┝眨” “怎么了诫钓?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長篙螟。 經(jīng)常有香客問我菌湃,道長,這世上最難降的妖魔是什么遍略? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任惧所,我火速辦了婚禮,結(jié)果婚禮上绪杏,老公的妹妹穿的比我還像新娘下愈。我一直安慰自己,他們只是感情好蕾久,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布势似。 她就那樣靜靜地躺著,像睡著了一般腔彰。 火紅的嫁衣襯著肌膚如雪叫编。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天霹抛,我揣著相機(jī)與錄音搓逾,去河邊找鬼。 笑死杯拐,一個胖子當(dāng)著我的面吹牛霞篡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播端逼,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼朗兵,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了顶滩?” 一聲冷哼從身側(cè)響起余掖,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎礁鲁,沒想到半個月后盐欺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赁豆,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年冗美,在試婚紗的時候發(fā)現(xiàn)自己被綠了魔种。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡粉洼,死狀恐怖节预,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情属韧,我是刑警寧澤安拟,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站挫剑,受9級特大地震影響去扣,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜樊破,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一愉棱、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧哲戚,春花似錦奔滑、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至脆炎,卻和暖如春梅猿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背秒裕。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工袱蚓, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人几蜻。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓喇潘,卻偏偏與公主長得像,于是被迫代替她去往敵國和親梭稚。 傳聞我的和親對象是個殘疾皇子颖低,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評論 2 344

推薦閱讀更多精彩內(nèi)容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi閱讀 7,294評論 0 10
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)弧烤,斷路器忱屑,智...
    卡卡羅2017閱讀 134,601評論 18 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法莺戒,繼承相關(guān)的語法粱栖,異常的語法,線程的語...
    子非魚_t_閱讀 31,587評論 18 399
  • Correctness AdapterViewChildren Summary: AdapterViews can...
    MarcusMa閱讀 8,852評論 0 6
  • 一個人一個晚上能做許多個夢脏毯。 每至深夜,食夢獸會游走在四方幔崖,入夢食店,食夢,有道行高深的可以收夢赏寇。 自與戰(zhàn)神蒼玉大戰(zhàn)以...
    是一溪云兒閱讀 378評論 6 6