如何将来自 TextViews 中动态创建的 EditTexts 的用户输入显示到另一个活动中?
Posted
技术标签:
【中文标题】如何将来自 TextViews 中动态创建的 EditTexts 的用户输入显示到另一个活动中?【英文标题】:How to show user input from dynamic created EditTexts in TextViews into another activity? 【发布时间】:2020-11-01 03:04:52 【问题描述】:在主要活动中,我有一个按钮,每次用户单击此按钮时,onClick
方法都会创建 EditText
。我想将每个EditText
到TextView
的用户输入传递到另一个活动中。但是TextView
仅显示来自最后EditText
的用户输入。我的代码可能看起来很奇怪,因为我试图自己解决问题。如何显示来自每个创建的 EditText
的用户输入?我是编程新手。提前谢谢你。
Java 代码
编辑文本代码
int i=1;
int numberOfCreated = 2;
public void buttonCreate(View view) // button onClick method
for(i=1;i<numberOfCreated;i++)
LinearLayout createdEditText1Layout=findViewById(R.id.createdEditText1Layout);
editText1 = new EditText(this);
LinearLayout.LayoutParams paramsForEditText1 = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
editText1.setLayoutParams(paramsForEditText1);
editText1.setInputType(InputType.TYPE_CLASS_TEXT);
editText1.setHint(R.string.editText1Hint);
editText1.setTextSize(16);
createdEditText1Layout.addView(editText1);
意图将字符串传递给第二个活动
public void openResult()
String productName = editText1.getText().toString();
Intent intent2 = new Intent(this, ResultActivity.class);
intent2.putExtra("product", productName);
startActivity(intent2);
public void buttonResultClick(View view)
openResult();
第二次活动
int i=1;
int numberOfButtons = 2;
for(i=1;i<numberOfButtons;i++)
LinearLayout layoutForProductName = findViewById(R.id.layoutForProductName);
TextView productNameTextView = new TextView(this);
LinearLayout.LayoutParams layoutParamsForProductNameTextView = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
productNameTextView.setLayoutParams(layoutParamsForProductNameTextView);
productNameTextView.setTextSize(40);
String productName = getIntent().getStringExtra("product");
productNameTextView.setText(productName);
layoutForProductName.addView(productNameTextView);
【问题讨论】:
【参考方案1】:据我所知,因为您只添加了一个String productName
您可以通过传递一个字符串数组 aka String[]
来解决这个问题
public void openResult()
ArrayList<String> productNames = new ArrayList<String>();
for(int y=0; y < createdEditText1Layout.getChildCount(); y++)
if((View)layout.getChildAt(y) instanceof TextView)
String productName = editText1.getText().toString();
productNames.add(productName);
Intent intent2 = new Intent(this, ResultActivity.class);
intent2.putStringArrayListExtra("product", productNames);
startActivity(intent2);
然后在第二个活动中你会回忆起来
int i=1;
int numberOfButtons = 2;
for(i=1;i<numberOfButtons;i++)
LinearLayout layoutForProductName = findViewById(R.id.layoutForProductName);
TextView productNameTextView = new TextView(this);
LinearLayout.LayoutParams layoutParamsForProductNameTextView = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
productNameTextView.setLayoutParams(layoutParamsForProductNameTextView);
productNameTextView.setTextSize(40);
String productName = getIntent().getExtras().getStringArrayList("product").get(i);
productNameTextView.setText(productName);
layoutForProductName.addView(productNameTextView);
【讨论】:
for(View view: createdEditText1Layout.getChildCount()) 显示错误 foreach 不适用于 int 类型 一开始我没有注意到,但在第二个活动中,String productName = getIntent().getStringArrayList("product").get(i);
的错误也是 Cannot resolve method getStringArrayList in Intent
@Max 已修复,我错过了 .getExtras()
道歉
我不知道为什么,但它只显示来自最后一个 EditText 的输入。无论如何,谢谢你的帮助。以上是关于如何将来自 TextViews 中动态创建的 EditTexts 的用户输入显示到另一个活动中?的主要内容,如果未能解决你的问题,请参考以下文章
如何将选定的对话框值设置为片段中的 TextViews [重复]
如何将两个 TextViews 定位在 ListView 中彼此相邻,但至少有一定的差距
如何使用CursorAdapter将Filter设置为ListView?