我创建了三个编辑文本输入和另一组输入,当您单击“添加更多”按钮时应动态添加这些输入。我想收集从第二个活动提交的数据,并根据单击“添加更多”按钮的次数将它们分开我的问题是,当我单击“提交”按钮时,我可以获取第二个活动中静态编辑文本字段的初始值,但无法获取动态编辑文本的值。我将不胜感激所提供的任何帮助谢谢Activity.java 添加更多按钮public void onAddField(View v) { dynamicEditTexts = new ArrayList<EditText>();//added this LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); final View rowView = inflater.inflate(R.layout.field, null); // Add the new row before the add field button. parentLinearLayout.addView(rowView, parentLinearLayout.getChildCount() - 1); EditText dynamicText = new EditText(this);//added this // EditText dynamicText = rowView.findViewById(R.id.dynamic_layout); dynamicEditTexts.add(dynamicText);}提交按钮public void getValue(View view) { Intent intent = new Intent(MainActivity.this, Output.class); titleM = findViewById(R.id.title_main); productNameM = findViewById(R.id.product_name_main); productNumberM = findViewById(R.id.product_number_main); //getting the texts String Title = titleM.getText().toString(); String PName = productNameM.getText().toString(); double PNumber = Double.parseDouble(productNumberM.getText().toString()); // ******** FOR THE DYNAMIC EDITEXT FIELDS ************ String[] inputItems = new String[dynamicEditTexts.size()]; String string = String.valueOf(dynamicEditTexts.size()); for(int j = 0; j <dynamicEditTexts.size(); j++){ inputItems[j] = dynamicEditTexts.get(j).getText().toString(); intent.putExtra("dynamicData", inputItems[j]); } intent.putExtra("title", Title); intent.putExtra("pname", PName); intent.putExtra("pnumber", PNumber); startActivity(intent); finish(); }}
1 回答
Smart猫小萌
TA贡献1911条经验 获得超7个赞
在方法中收集动态 edittext 字段值时,您将覆盖之前在意图附加中输入的值getValue。
您需要做的是收集列表、数组或类似数据结构中的所有字符串,并将它们放入 extras 中。因此,要实现这一目标,您应该重写您的for逻辑,如下所示:
for (int j = 0; j <dynamicEditTexts.size(); j++) {
inputItems[j] = dynamicEditTexts.get(j).getText().toString();
}
intent.putExtra("dynamicData", inputItems);
由于您将数据作为字符串数组注入,因此您还必须将其作为字符串数组读回,因此您的 Output.java 将如下所示:
String[] dynamicItems = collectDynamicData.getStringArrayExtra("dynamicData");
并将其转换为字符串列表:
ArrayList<String> alldynamicTexts = new ArrayList<>(Arrays.asList(dynamicItems));
当然,您可以首先将它们作为字符串数组列表注入,然后使用 读回它们collectDynamicData.getStringArrayListExtra("dynamicData"),选择适合您的任何方法。
希望能帮助到你。
添加回答
举报
0/150
提交
取消