在 XML 资源中存储 R.id.elements
Storing R.id.elements in XML resources
我有几个 EditText 元素的布局:
<EditText android:id="@+id/etName"/>
<EditText android:id="@+id/etModel"/>
<EditText android:id="@+id/etYear"/>
此数组存储所有这些元素的 ID:
int[] fields = {
R.id.etName,
R.id.etModel,
R.id.etYear
};
我可以在 "res/values/fields.xml" 中存储和加载这些 ID,而不是像这样在 java 文件中的 int 数组:
<resources>
<array name="fields">
<item name="etName" type="id" />
<item name="etModel" type="id" />
<item name="etYear" type="id" />
</array>
</resources>
TypedArray fields = getResources().obtainTypedArray(R.array.fields);
您的id已经存在于您的xml布局中,您可以简单地引用它们来定义一个数组:
<array name="fields">
<item>@id/etName</item>
<item>@id/etModel</item>
<item>@id/etYear</item>
</array>
之后你就可以在你的代码中使用这个数组了:
TypedArray fields = getResources().obtainTypedArray(R.array.fields);
for (int i = 0; i < fields.length(); i++) {
EditText editText = findViewById(fields.getResourceId(i, 0));
editText.setText("Yo!"); // or something else
}
fields.recycle();
我有几个 EditText 元素的布局:
<EditText android:id="@+id/etName"/>
<EditText android:id="@+id/etModel"/>
<EditText android:id="@+id/etYear"/>
此数组存储所有这些元素的 ID:
int[] fields = {
R.id.etName,
R.id.etModel,
R.id.etYear
};
我可以在 "res/values/fields.xml" 中存储和加载这些 ID,而不是像这样在 java 文件中的 int 数组:
<resources>
<array name="fields">
<item name="etName" type="id" />
<item name="etModel" type="id" />
<item name="etYear" type="id" />
</array>
</resources>
TypedArray fields = getResources().obtainTypedArray(R.array.fields);
您的id已经存在于您的xml布局中,您可以简单地引用它们来定义一个数组:
<array name="fields">
<item>@id/etName</item>
<item>@id/etModel</item>
<item>@id/etYear</item>
</array>
之后你就可以在你的代码中使用这个数组了:
TypedArray fields = getResources().obtainTypedArray(R.array.fields);
for (int i = 0; i < fields.length(); i++) {
EditText editText = findViewById(fields.getResourceId(i, 0));
editText.setText("Yo!"); // or something else
}
fields.recycle();