什么是ids.xml用于?

sam*_*sam 48 android

只是一个简单的问题,在开发Android应用程序时使用的ids.xml是什么?我在android资源网页上看到一个例子,其中包含:

<resources>
  <item name="snack" type="id"/>
</resources>
Run Code Online (Sandbox Code Playgroud)

这将用于什么?

Yas*_*mar 28

id.xml通常用于声明用于布局中视图的id.

你可以用类似的东西

<TextView android:id="@id/snack">
Run Code Online (Sandbox Code Playgroud)

对于你给定的xml.

  • 在"ids.xml"中定义它的任何优势,而不仅仅是... android:id ="@ + id/snack"? (19认同)
  • 您也可以将它用于标签``view.setTag(id,value)`以便稍后从您的视图中读取该标签... (6认同)
  • 那么,我应该使用android:id ="@ + id/newID"或在ids.xml文件中声明newID吗?什么是最好的解决方案? (5认同)

小智 26

ids.xml具有以下优点:声明了所有id,因此编译器可以识别它们.如果是这样的话:

<TextView
    android:id="@+id/text1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignBelow="@id/text2"
    android:text="...."/>
<TextView
    android:id="@+id/text2"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="...."/>
Run Code Online (Sandbox Code Playgroud)

可能导致编译错误,因为text2在声明之前被引用

  • 这是一个有效的解决方法,但在视图中声明id而不是指定的id可能不是最好的风格选择.要使语言正确镜像您的意图,应在使用它的视图中声明id. (2认同)

Jos*_*_GD 9

在动态创建视图时,在ids.xml中预定义id 可以提供引用新创建视图的可能性.使用该setId(id)方法后,您可以像在XML中定义一样访问该视图.这篇博文有一个很好的例子.


mir*_*mir 8

id.xml的另一个应用程序是关于布局和库项目.假设您在库(对话框)布局中指定了一个通用的选项列表

<CheckedTextView android:id="@+id/checked_option_one"...
<CheckedTextView android:id="@+id/checked_option_two"...
...
Run Code Online (Sandbox Code Playgroud)

并在通用(对话框)片段中处理这些视图

optionOneCheck = (CheckedTextView)rootView.findViewById(R.id.checked_option_one);
optionTwoCheck = (CheckedTextView)rootView.findViewById(R.id.checked_option_two);
Run Code Online (Sandbox Code Playgroud)

如果从主项目中的布局副本中删除任何视图声明,则在运行时将出现"无此字段"错误异常.

编译器不会抱怨,但在运行时,id实际上并不存在/已知.

在id.xml中声明id并使用

<CheckedTextView android:id="@id/checked_option_one"...
...
Run Code Online (Sandbox Code Playgroud)

避免运行时错误