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

Moh*_*man 37 java string android android-edittext

我已经成功创建了EditTexts,具体取决于Android中的用户输入,并且我已经使用setId()方法为它们分配了唯一的ID .

现在我想要做的是EditText当用户点击一个按钮时从动态创建的s中获取值,然后将所有值存储在String变量中.即,具有id为'1'的EditText的值应保存在String类型的str1中,依此类推,具体取决于EditTexts的数量.

我正在使用getid()gettext().toString()方法,但它似乎有点棘手...我不能将EditText的每个值分配给String变量.当我尝试这样做NullPointerException时会发生,如果不是没有显示用户输入数据的情况,我会以吐司形式显示它.

继承人,代码:

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);

}
Run Code Online (Sandbox Code Playgroud)

我现在如何将每个EditText中的值传递给每个不同的字符串变量?如果某个机构可以帮助提供示例代码,那将会很不错.

Pet*_*ego 56

在每次迭代中,您都在重写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);
}
Run Code Online (Sandbox Code Playgroud)

现在allEds列出对所有EditTexts的引用,因此您可以迭代它并获取所有数据.

更新:

按要求:

String[] strings = new String[](allEds.size());

for(int i=0; i < allEds.size(); i++){
    string[i] = allEds.get(i).getText().toString();
}
Run Code Online (Sandbox Code Playgroud)

  • 我的错.应该是`String [] strings = new String [allEds.size()];` (2认同)