什么是ids.xml用于?

时间:2011-10-01 16:06:16

标签: android

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

<resources>
  <item name="snack" type="id"/>
</resources>

这将用于什么?

5 个答案:

答案 0 :(得分:26)

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

你可以使用像

这样的东西
<TextView android:id="@id/snack">

为您提供的xml。

答案 1 :(得分: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="...."/>

可能导致编译错误,因为在声明

之前引用了text2

答案 2 :(得分:9)

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

答案 3 :(得分:8)

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

<CheckedTextView android:id="@+id/checked_option_one"...
<CheckedTextView android:id="@+id/checked_option_two"...
...

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

optionOneCheck = (CheckedTextView)rootView.findViewById(R.id.checked_option_one);
optionTwoCheck = (CheckedTextView)rootView.findViewById(R.id.checked_option_two);

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

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

在id.xml中声明id并使用

<CheckedTextView android:id="@id/checked_option_one"...
...

避免运行时错误

答案 4 :(得分:1)

ids.xml功能更强大。您可以预定义值,例如

<item name="fragment_my_feature" type="layout"/>
<item name="my_project_red" type="color"/>

不仅id。实际上,您可以使用更多的资源类型:https://developer.android.com/guide/topics/resources/more-resources

在多模块应用的根模块中预定义一些布局,颜色等非常有用。您可以在具有根模块作为依存关系的特定应用模块中保留实际的布局,颜色等。