Java 使用循环引用不同的editText ID
可能重复:Java 使用循环引用不同的editText ID,java,android,loops,while-loop,android-edittext,Java,Android,Loops,While Loop,Android Edittext,可能重复: 我有一个大约100个EditText(15行,10列)的布局,所有这些都是根据它们的行/列ID命名的(例如box0101,box0102等) 我有一个clearBoard()方法,当单击“clear”按钮时调用它(参见下面的代码)。它旨在循环遍历所有框(box0101、box0102、box0103等),并将内容替换为“”-使其为空白 LogCat中出现的错误是java.lang.NoSuchFieldException:box0101 在java.lang.Class.getDe
我有一个大约100个EditText(15行,10列)的布局,所有这些都是根据它们的行/列ID命名的(例如box0101,box0102等) 我有一个clearBoard()方法,当单击“clear”按钮时调用它(参见下面的代码)。它旨在循环遍历所有框(box0101、box0102、box0103等),并将内容替换为“”-使其为空白 LogCat中出现的错误是java.lang.NoSuchFieldException:box0101 在java.lang.Class.getDeclaredField(Class.java:631)-但是在我的xml中定义了一个box0101,我在代码中多次引用它,没有问题 有什么想法吗 从XML
<EditText
android:gravity="center"
android:layout_marginLeft="10dp"
android:id="@+id/box0101"
android:layout_width="30dp"
android:layout_height="30dp"
android:background="@drawable/boxoutlineone" />
<EditText
android:gravity="center"
android:id="@+id/box0201"
android:layout_width="30dp"
android:layout_height="30dp"
android:background="#000000" />
<EditText
android:gravity="center"
android:id="@+id/box0301"
android:layout_width="30dp"
android:layout_height="30dp"
android:background="#000000" />
<EditText
android:gravity="center"
android:id="@+id/box0401"
android:layout_width="30dp"
android:layout_height="30dp"
android:background="#000000" />
等等
public void clearBoard() {
final int ROW_COUNT = 14;
final int COL_COUNT = 9;
final String ROWS[] = {"01","02","03","04","05","06","07","08","09","10","11","12","13","14","15"};
final String COLS[] = {"01","02","03","04","05","06","07","08","09","10"};
for(int i=0; i<ROW_COUNT; i++) {
for(int j=0; j<COL_COUNT; j++) {
String a = ROWS[i];
String b = COLS[j];
int editTextId=getResId("box"+a+b,this,id.class);
EditText et=(EditText)findViewById(editTextId);
et.setText("");
}
}
}
public static int getResId(String variableName, Context context, Class<?> c) {
try {
Field idField = c.getDeclaredField(variableName);
return idField.getInt(idField);
} catch (Exception e) {
e.printStackTrace();
return -1;
}
}
public void clearBoard(){
最终整数行计数=14;
最终整数列计数=9;
最后的字符串行[]={“01”、“02”、“03”、“04”、“05”、“06”、“07”、“08”、“09”、“10”、“11”、“12”、“13”、“14”、“15”};
最终字符串COLS[]={“01”、“02”、“03”、“04”、“05”、“06”、“07”、“08”、“09”、“10”};
对于(int i=0;i我不知道为什么您决定使用字段
类来获取id
,而不是更实用的方法:
for(int i=0;i)他们的ID是什么以及如何声明?请显示。。。
public void clearBoard() {
final int ROW_COUNT = 14;
final int COL_COUNT = 9;
final String ROWS[] = {"01","02","03","04","05","06","07","08","09","10","11","12","13","14","15"};
final String COLS[] = {"01","02","03","04","05","06","07","08","09","10"};
for(int i=0; i<ROW_COUNT; i++) {
for(int j=0; j<COL_COUNT; j++) {
String a = ROWS[i];
String b = COLS[j];
int editTextId=getResId("box"+a+b,this,id.class);
EditText et=(EditText)findViewById(editTextId);
et.setText("");
}
}
}
public static int getResId(String variableName, Context context, Class<?> c) {
try {
Field idField = c.getDeclaredField(variableName);
return idField.getInt(idField);
} catch (Exception e) {
e.printStackTrace();
return -1;
}
}
for(int i=0; i<ROW_COUNT; i++) {
for(int j=0; j<COL_COUNT; j++) {
String a = ROWS[i];
String b = COLS[j];
int editTextId = getResources().getIdentifier("box" + a + b , "id", getPackageName());
EditText et=(EditText)findViewById(editTextId);
et.setText("");
}
}