我有一個自定義視圖「ClearableTextView」,在相對佈局中有一個EditText和一個按鈕。該視圖是通過膨脹佈局文件創建的,因此這兩個視圖都有ID。在多個片段中具有相同ID的視圖
我也有兩個片段,每個片段膨脹它自己的佈局。這兩種佈局都包含我自定義的ClearableTextView,在其他視圖中。
我知道,重複使用相同的ID是不好的,結果是不可預知的,但是一個來自谷歌的人的名字聽起來像法國人曾經說過,只要孩子的意見在父母中有獨特的ID應該不會有問題找到合適的人。我搜索到的視圖甚至沒有共同的根視圖,它們的視圖由不同的碎片擁有。
我尋找的EditText的片段A像這樣的參考:
v= inflater.inflate(layoutA);
TextView tvA=v.findViewById("someLayoutUniqueID").findById(ClearableTextView_uniqueID_A).findViewById(editTextID);
而對於的EditText在片段B:
v= inflater.inflate(layoutB);
TextView tvA=v.findViewById("anotherLayoutUniqueId").findById(ClearableTextView_uniqueID_B).findViewById(editTextID);
當我說的ID是唯一的,這意味着它在我的項目中的所有佈局中都是獨一無二的。
現在奇怪的東西: 我創建片段A.我不知道它是否重要,但片段使用FragmentStatePagerAdapter附加到viewPager。我在EditText中輸入了一些東西。然後我按下一個按鈕創建Fragment B,從viewPager中刪除A,並將Fragment B附加到viewPager。現在在片段B中,EditText包含片段A的文本!爲什麼?
我知道,viewpager結合了每個片段的視圖,但在我的情況下,它不應該,因爲一直只有一個片段。而且我正在父母身上搜索具有唯一ID的EditText視圖。有任何想法嗎?
我的自定義視圖封裝了清理部分。在自定義視圖中找到正確的EditText,並按鈕清除相應EditText中的文本。我現在發現了一個骯髒的解每當自定義視圖膨脹時,我按ID查找EditText,記住refenece,然後隨機化id。所以當下一個自定義視圖被誇大時,那裏不會是另一個具有相同ID的EditText。 – delegate 2013-02-28 07:11:22