什么是ids.xml用于?

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

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

这将用于什么?

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

你可以使用类似的东西

 <TextView android:id="@id/snack"> 

为你的给定的XML。

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在声明之前被引用

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); 

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

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

在id.xml中声明id并使用

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

避免运行时错误

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