为了账号安全,请及时绑定邮箱和手机立即绑定

在第二个活动中分别收集和显示动态 editTexts 的值

在第二个活动中分别收集和显示动态 editTexts 的值

温温酱 2024-01-28 15:59:30
我创建了三个编辑文本输入和另一组输入,当您单击“添加更多”按钮时应动态添加这些输入。我想收集从第二个活动提交的数据,并根据单击“添加更多”按钮的次数将它们分开我的问题是,当我单击“提交”按钮时,我可以获取第二个活动中静态编辑文本字段的初始值,但无法获取动态编辑文本的值。我将不胜感激所提供的任何帮助谢谢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"),选择适合您的任何方法。


希望能帮助到你。


查看完整回答
反对 回复 2024-01-28
  • 1 回答
  • 0 关注
  • 27 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信