在android编程中使用资源id

在android编程中使用资源id,android,android-layout,Android,Android Layout,为什么我们在android编程中对小部件使用资源id,而不是每个小部件都需要资源id? 我需要为每个小部件创建单独的id吗?或者我可以为类似的小部件使用一个id吗 为什么我们在android编程中对小部件使用资源id,而不是每个小部件都需要资源id 对于那些需要被其他东西引用的小部件,您只需要android:id属性,主要是: 您的Java代码 您正在继承的Java代码(例如,ListActivity和ListFragment需要使用@android:id/list的ListView) 相同R

为什么我们在android编程中对小部件使用资源id,而不是每个小部件都需要资源id? 我需要为每个小部件创建单独的id吗?或者我可以为类似的小部件使用一个id吗

为什么我们在android编程中对小部件使用资源id,而不是每个小部件都需要资源id

对于那些需要被其他东西引用的小部件,您只需要
android:id
属性,主要是:

  • 您的Java代码
  • 您正在继承的Java代码(例如,
    ListActivity
    ListFragment
    需要使用
    @android:id/list
    ListView
  • 相同
    RelativeLayout中的其他小部件
欢迎您在所有内容上添加
android:id
属性,拖放GUI构建器(例如androidstudio)将倾向于这样做

我可以为类似的小部件使用一个id吗


通常不会。ID需要足够唯一,这意味着当您尝试查找小部件时,当您调用
findViewById()
(在活动或某个祖先
ViewGroup
)时,当您创建视图实例并使用
android:id=“@+id/someId”
为其分配id时,资源id将自动创建。需要使用
findviewbyd(R.id.someId)从布局中获取该视图如果您希望多个小部件扩展一些类似的功能,只需让它们的响应调用某种方法即可。我们分配ID的原因是为了区分布局中的两个小部件。有些小部件不需要ID(例如linearlayout),因为用户并不总是直接与该布局交互。@Tukajo最后一部分有误导性。有很多理由给
视图组
(例如“LinearLayout”)一个id。“因为用户从未直接与该布局交互”,所以“从未”是不真实的。我需要经常这样做。我知道这样做是有原因的,我是说你不一定总是必须这样做。我修改了一下措辞。是的,我抓住了,我的错。重新措辞,谢谢。你的解释很清楚。现在它更有意义了。