java - 如何从 Android 中每个动态创建的 EditText 获取数据?

标签 java android string android-edittext

我已经根据 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/

相关文章:

java - 从另一个类调用 string[] 显示为 null

android - 关于在 Android 中以编程方式备份​​ Google Drive 上的 Sqlite 文件和照片的示例项目

c# - 近似字符串匹配

java - Eclipse中重命名标识符时Enter vs Escape

java - 使用 bouncycaSTLe api 创建签名。键始终为空

java - 我应该使用 Java 还是 .NET 进行 Web 开发?

android - 如何使用自定义适配器对 listView 进行排序

android - 每日重复警报不起作用

java - String.split(String regex) 意外行为?

java - 任意长度的相邻重复子串