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 -==
文字列の比較には絶対に使用しないでください。常に機能するとは限りません!!