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

我创建了三个编辑文本输入和另一组输入,当您单击“添加更多”按钮时应动态添加这些输入。

我想收集从第二个活动提交的数据,并根据单击“添加更多”按钮的次数将它们分开

我的问题是,当我单击“提交”按钮时,我可以获取第二个活动中静态编辑文本字段的初始值,但无法获取动态编辑文本的值。

我将不胜感激所提供的任何帮助谢谢

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

    }

}



温温酱
浏览 34回答 1
1回答

Smart猫小萌

在方法中收集动态 edittext 字段值时,您将覆盖之前在意图附加中输入的值getValue。您需要做的是收集列表、数组或类似数据结构中的所有字符串,并将它们放入 extras 中。因此,要实现这一目标,您应该重写您的for逻辑,如下所示:for (int j = 0; j <dynamicEditTexts.size(); j++) {&nbsp; &nbsp; 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"),选择适合您的任何方法。希望能帮助到你。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java