我有一个自定义视图“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