我已经根据 Android 中的用户输入成功创建了 EditText,并且我还使用 setId()
方法为它们分配了唯一 ID。
现在我要做的是在用户点击按钮时从动态创建的 EditText
中获取值,然后将它们全部存储在 String 变量中。即来自 EditText 的具有 id '1' 的值应保存在 String 类型的 str1 中,依此类推,具体取决于 EditText 的数量。
我正在使用 getid()
和 gettext().toString()
方法,但这似乎有点棘手...我无法将 EditText 的每个值分配给一个字符串变量。当我尝试这样做时,会发生 NullPointerException
,如果不是没有显示用户输入数据的情况,我会在 toast 中显示它。
这里,代码:
EditText ed;
for (int i = 0; i < count; i++) {
ed = new EditText(Activity2.this);
ed.setBackgroundResource(R.color.blackOpacity);
ed.setId(id);
ed.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
linear.addView(ed);
}
我现在如何将每个 EditText 的值传递给每个不同的字符串变量?如果有人可以帮助提供示例代码,那就太好了。
最佳答案
在每次迭代中,您都在重写 ed
变量,因此当循环结束时,ed
仅指向您创建的最后一个 EditText 实例。
您应该存储对所有 EditTexts 的所有引用:
EditText ed;
List<EditText> allEds = new ArrayList<EditText>();
for (int i = 0; i < count; i++) {
ed = new EditText(Activity2.this);
allEds.add(ed);
ed.setBackgroundResource(R.color.blackOpacity);
ed.setId(id);
ed.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
linear.addView(ed);
}
现在 allEds
列表保存对所有 EditTexts 的引用,因此您可以对其进行迭代并获取所有数据。
更新:
根据要求:
String[] strings = new String[](allEds.size());
for(int i=0; i < allEds.size(); i++){
string[i] = allEds.get(i).getText().toString();
}
关于java - 如何从 Android 中每个动态创建的 EditText 获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5923587/