正如 Quoi 指出的那样,您可以通过反射来做到这一点,但这通常不是一个好主意。
将对象添加到列表或地图会更好:
List<EditText> list = new ArrayList<EditText>();
EditText editTxt1 = (EditText) findViewById(R.id.editText1);
list.add(editTxt1);
EditText editTxt2 = (EditText) findViewById(R.id.editText2);
list.add(editTxt2);
EditText editTxt3 = (EditText) findViewById(R.id.editText3);
list.add(editTxt1);
EditText editTxt4 = (EditText) findViewById(R.id.editText4);
现在我们可以循环浏览列表并使用索引来检查正在调用的编辑文本。
int i = 0;
for (EditText e : list) {
if(e.getText().toString().equals("something")) {
System.out.println("editText" + i + " equals something");
// do stuff
}
i++;
}
您也可以使用 Map 来执行此操作,这将允许您针对对象使用名称值,以帮助您更好地参考来检查正在调用的对象。这需要更多的工作,但可能会使用
Map<EditText, String> map = new HashMap<EditText, String>();
EditText editTxt1 = (EditText) findViewById(R.id.editText1);
map.put(editTxt1, "editTxt1");
EditText editTxt2 = (EditText) findViewById(R.id.editText2);
list.add(editTxt2, "editTxt2");
for (Entry<String, String> e : map.entrySet()) {
if(e.getValue().equals("something")) {
System.out.println(e.getKey() + " was equal to somethihng");
}
}
PS - 永远不要==
用来比较字符串,它不会总是有效的!