gpt4 book ai didi

java - 资源中项目的计数元素和获取属性

转载 作者:行者123 更新时间:2023-11-29 18:44:49 24 4
gpt4 key购买 nike

我有一个资源文件

<?xml version="1.0" encoding="utf-8"?>
<resources>
<IDs name="IDs">
<item type="id" name="bt_A"/>
<item type="id" name="bt_B"/>
<item type="id" name="bt_C"/>
<item type="id" name="bt_D"/>
</IDs>
</resources>

如何计算 ID 中的项目数。这意味着结果将为 4。

如何通过循环获取项目的每个名称。我可以访问 R.id.bt_A、R.id.bt_B...但我无法想象如何通过循环获取所有 name。像这样的东西(这段代码无法运行,只是说明):

for(int i=0; i<R.IDs.count; i++){
Button bt = new Button(getBaseContext());
bt.setId(R.IDs[i]);
}

我不想再制作一个静态数组来再次存储所有 id。我只想使用我资源中的所有 ID。

编辑问题如果我的资源文件是:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<integer name="length">4</integer>
<item type="id" name="bt_1"/>
<item type="id" name="bt_2"/>
<item type="id" name="bt_3"/>
<item type="id" name="bt_4"/>
<string name="label_1">Ok</string>
<string name="label_2">Cancel</string>
<string name="label_3">Exit</string>
<string name="label_4">Stop</string>
</resources>

我可以通过follows获取id,但是获取不到string值!我该怎么办?

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
GridLayout root = new GridLayout(getBaseContext());
root.setBackgroundColor(Color.GRAY);
root.setRowCount(2);
root.setColumnCount(2);

int count = getResources().getInteger(R.integer.length);
int[] ids = new int[count];
String[] labels = new String[count];
for(int i=0; i<count; i++) {
ids[i] = getResources().getIdentifier("bt_" + (i+1), "id", getPackageName());
labels[i] = getResources().getString(getResources().getIdentifier("label_"+(i+1),"string", getPackageName()));//Wrong, just trace true/false on button
}
Log.d("IDs", ids.toString());
for(int i=0; i<count;i++){
Button bt = new Button(getBaseContext());
bt.setId(ids[i]);
bt.setText(ids[i]);
root.addView(bt, i);
}

setContentView(root);
}

最佳答案

没有自动生成 id 数组(android 不处理内部 id,试过)虽然根据您的要求有一个替代方案

声明长度和id标签为

<integer name="length">4</integer>
<item type="id" name="bt_A"/>
<item type="id" name="bt_B"/>
<item type="id" name="bt_C"/>
<item type="id" name="bt_D"/>

然后在 java 中使用字符转换为 ascii 的循环来获取值作为

for(int i=65; i< 65+getResources().getInteger(R.integer.length); i++){
Button bt = new Button(getBaseContext());
bt.setId(getResources().getIdentifier("bt_"+(char)i,"id",getPackageName()));
}

关于java - 资源中项目的计数元素和获取属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52231018/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com