java - 在 XML 资源中存储 R.id.elements

标签 java android android-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();

关于java - 在 XML 资源中存储 R.id.elements,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49182400/

相关文章:

java - 连接到代理防火墙后面的 DBpedia 端点

java - Java 线程中的 ObjectInputStream 失败

java - 事务性非 xa JMS session 有什么意义?

android - 如何点击 ViewPager 中的项目

android - 为什么运行时无法识别 "res/values/strings.xml"中定义的字符串

android - Android MediaPlayer Audio Session ID 指的是什么?

java - 什么是 Java 上的隐式构造函数

android - 如何以编程方式从布局中获取 subview [来自 R.layout 资源]

安卓背景动画滞后游戏

Android - 使用 postDelayed() 调用定期运行方法