好的,我现在感到困惑的是Android ID是否需要唯一。这就是为什么会出现混淆的原因:
假设有一个Activity
拥有一个TextView
(android:id="text")和一个Button
(android:id="button")。当Button
被点击时,它会将TextView
的文本设置为随机文本,因此要添加监听器,我将检索按钮并执行任务:
Button b = (Button) findViewById(R.id.button)
然后添加监听器进行操作。
现在,我可以用相同的ID R.id.text
从DialogFragment
、Fragment
等地方引用这个相同的TextView
,所有更改都会被应用于这个文本视图,没有疑问。
在子类化BaseAdapter
的情况下,您需要覆盖getView
,如果需要则进行膨胀,否则进行更改。现在,您使用几乎相同的方式检索Views
。
您可以使用convertView.findViewById(..)
。
如果所有视图都需要具有唯一的ID,那么在getView
中更改View
的内容不会导致混乱吗?
我的意思是,所有膨胀的视图都具有与布局中定义的相同的ID。
我的理解是,这些ID在膨胀它们的视图的上下文中是唯一的。由于我是一个初学者,所以我想要澄清
Ahmad回答后更新
因此,这意味着我不能使用相同的布局在一个Activity
中膨胀两个Fragment
。这将导致异常。由同一个Activity
膨胀,因此属于同一个实例,ID将发生冲突。
findViewById()
搜索视图,你可能会收到具有该id的任何视图。只要在你搜索的视图子树中id是唯一的,就不会有问题。 - Alex MDCfindViewById()
方法的Activity或View的上下文中是唯一的吗? - LarsH