我试图以完全相同的方式修改两个TextView。我以为我可以给他们相同的id和findViewById()和setText()方法更改这些TextViews在两行。但似乎只有一个TextView被改变了。具有相同ID的两个XML元素
有没有办法做到这一点? 或者我必须为每个元素创建不同的ID,通过findViewById()方法获取每个元素并设置它的文本?
我试图以完全相同的方式修改两个TextView。我以为我可以给他们相同的id和findViewById()和setText()方法更改这些TextViews在两行。但似乎只有一个TextView被改变了。具有相同ID的两个XML元素
有没有办法做到这一点? 或者我必须为每个元素创建不同的ID,通过findViewById()方法获取每个元素并设置它的文本?
查看ID是纯整数,所以你可以简单地有一个你想改变的ID数组。例如:
int[] ids = { R.id.text1, R.id.text2, ... };
for (int id: ids) {
TextView tv = (TextView) findViewById(id);
tv.setText("Hello, World!");
}
当然,最好将ids
作为静态最终类成员。 I .: .:
public class MyActivity extends Activity {
private static final int[] textViewIDs = {
R.id.text1,
R.id.text2,
...
}
...
}
我看到它是我的问题的唯一解决方案。谢谢 – Seraphis 2010-11-10 11:56:52
您必须定义两个不同的ID。没有办法使用与另一个相同的id的小部件,因为这两个小部件都是两个不同的独立小部件。
一个id对于每个View都是唯一的。所以不能共享。你可以做的是同时在代码中提取两个view id,并且修改文本。像if(id == id1 & & id == id2)然后编辑文本。
你的意思是“在代码中提供两个查看ID”?你能解释一下哪种TextView会在这种情况下被修改吗? – Seraphis 2010-11-10 11:45:03
你为什么要这样做? – Macarse 2010-11-10 11:38:46
Android!= jQuery – Felix 2010-11-10 11:43:29
我为什么要这样做? 我有两个构建不同的元素(重力值不同的元素)的两个LinearLayout。我认为做两种不同的布局会更容易,并且在需要时使其中一个可见,另一个不见。 – Seraphis 2010-11-10 11:49:11