我有以下问题:
在 Android Studio 中我生成 enEditText
动态地当ExerciseButton
被点击:
public void exerciseButtonClick(View view) {
EditText exercise = new EditText(this);
exercise.setId(exerciseId);
exerciseId++;
}
稍后在代码中我想引用我所有的EditText
是通过ID。我正在尝试这样的事情,但这不起作用:
for (int i = 1; i < exerciseId; i++) {
EditText currentEditText = (EditText) findViewById(i);
// further instructions on that EditText
}
错误当然就在这里:findViewById(i)
,显示预期资源类型为 id。我怎么解决这个问题?
您需要确保ID
不会与 Android 生成的 id 冲突。另外,您需要确保将视图添加到活动视图层次结构中,否则将永远找不到它们。
在您的情况下,我可能会尝试以下操作之一
1)如果你仍然想使用整数id,那么使用此方法生成一个有效的非冲突id
https://developer.android.com/reference/android/view/View.html#generateViewId
2) Set tag
到视图,并通过以下方式检索tag
。标签可以是任何对象。
public void exerciseButtonClick(View view) {
EditText exercise = new EditText(this);
exercise.setTag("exercise-" + excersiceId);
excersiceId++;
}
EditText exercise = (EditText)findViewByTag("exercise-" + someId );
3)保留一个局部变量,保存对创建的EditText(或创建的EditText数组)的引用
private EditText exercise;
public void exerciseButtonClick(View view) {
exercise = new EditText(this);
excersiceId++;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)