好吧,我感到困惑的是Android ids是否需要是唯一的.这就是出现混乱的原因:
我们只是说有Activity
一个TextView
(android:id ="text")和一个Button
(android:id ="button").将Button
文本视图的文本设置为随机文本.因此,要添加一个监听器,我将检索该按钮
Button b = (Button) findViewById(R.id.button)
,然后添加监听器来执行该任务.
现在,我可以从a ,a 和不具有相同id的内容中引用相同的 TextView DialogFragment
,Fragment
并且R.id.text
毫无疑问,所有更改都将应用于此文本视图.
在子类化的情况下BaseAdapter
,如果需要,您需要覆盖getView
进行膨胀的位置,如果没有,则进行更改.现在,您Views
以几乎相同的方式检索它.几乎.
你做了convertView.findViewById(..)
.
如果所有视图都需要具有唯一ID,那么如何更改内容View
并getView
不会导致偶然行为?
我的意思是,所有膨胀的视图都具有与布局中定义的相同的ID.
我的理解是,ids在夸大它们的观点的背景下是独特的.由于我是初学者,我要求澄清
那么,这是什么意思是,我不能膨胀2 Fragment
在Activity
使用相同的布局.这将导致异常.两者都是相同的Activity
,因此属于同一个实例.ids会发生冲突
Gus*_*tek 27
在文档中您可以阅读
ID在整个树中不一定是唯一的,但它在您正在搜索的树的部分内应该是唯一的(通常可能是整个树,因此最好在可能的情况下完全唯一).
这意味着如果您对所有视图使用相同的ID,则不会有例外,但显然布局将变得无用.
FindViewById只需遍历一棵树,直到它找到具有搜索id的第一个元素并返回它(如果找不到则返回null).如果你在树中有很少的具有相同id的元素你将始终获得相同的元素,即树中第一个元素.
你可能有很多片段用相同的布局充气,就像你有ListView一样,每个元素都有相同的布局,这是因为inflater不关心id值.它只是读取XML文件并创建一个具有正确视图对象的树.
归档时间: |
|
查看次数: |
10989 次 |
最近记录: |