Android Studio:如何获取已输入内容的EditText的Hint并显示到TextView
解决方案
核心问题分析
你现有代码存在两个关键错误:
- 未在
Intent中传递Hint文本,导致Result页面无法获取hintEditText1、hintEditText2等变量 Result页面的三元表达式逻辑重复且错误,无法正确判断“EditText有输入则显示对应Hint”的需求
方案1:高效处理14个EditText(推荐)
针对14个控件,用集合遍历替代重复代码,避免遗漏和冗余:
Ingredients.java 代码修改
// 1. 将所有EditText存入列表(替换为你的14个EditText id) List<EditText> editTextList = Arrays.asList( findViewById(R.id.editText1), findViewById(R.id.editText2), findViewById(R.id.editText3), // ... 剩余11个EditText ); Intent intent = new Intent(Ingredients.this, Result.class); // 2. 遍历检查每个EditText,仅传递有输入内容的Hint for (int i = 0; i < editTextList.size(); i++) { EditText et = editTextList.get(i); String inputContent = et.getText().toString().trim(); // 仅当输入内容非空时,传递对应Hint if (!inputContent.isEmpty()) { intent.putExtra("hint_" + (i+1), et.getHint().toString()); } } startActivity(intent);
Result.java 代码修改
// 1. 将所有对应TextView存入列表(替换为你的14个TextView id) List<TextView> textViewList = Arrays.asList( findViewById(R.id.textView1), findViewById(R.id.textView2), findViewById(R.id.textView3), // ... 剩余11个TextView ); Intent intent = getIntent(); // 2. 遍历匹配传递的Hint,设置到对应TextView for (int i = 0; i < textViewList.size(); i++) { TextView tv = textViewList.get(i); String receivedHint = intent.getStringExtra("hint_" + (i+1)); // 有传递的Hint则显示,否则清空或设默认值 tv.setText(receivedHint != null ? receivedHint : ""); }
方案2:修复你现有示例代码(适合少量控件)
如果暂时不想重构,直接修复现有代码的错误:
Ingredients.java 补充传递Hint
String arganOil = editText1.getText().toString().trim(); String neemOil = editText2.getText().toString().trim(); String hintEditText1 = editText1.getHint().toString(); String hintEditText2 = editText2.getHint().toString(); Intent intent = new Intent(Ingredients.this, Result.class); intent.putExtra("arganOil", arganOil); intent.putExtra("neemOil", neemOil); // 新增:传递Hint文本 intent.putExtra("hintEditText1", hintEditText1); intent.putExtra("hintEditText2", hintEditText2); startActivity(intent);
Result.java 修正逻辑并获取Hint
// 新增:获取传递的Hint变量 String arganOil = getIntent().getStringExtra("arganOil"); String neemOil = getIntent().getStringExtra("neemOil"); String hintEditText1 = getIntent().getStringExtra("hintEditText1"); String hintEditText2 = getIntent().getStringExtra("hintEditText2"); TextView textView22 = findViewById(R.id.textView22); TextView textView23 = findViewById(R.id.textView23); // 修正逻辑:输入非空则显示对应Hint textView22.setText(!arganOil.isEmpty() ? hintEditText1 : ""); textView23.setText(!neemOil.isEmpty() ? hintEditText2 : "");
关键注意点
- 用
trim()处理EditText内容,避免用户输入空格被误判为有效内容 - 多控件场景下优先用集合遍历,减少重复代码和人为错误
- 若EditText与TextView的对应关系不是顺序匹配,可改用
Map存储控件id的对应关系
内容的提问来源于stack exchange,提问作者Mirza Šabanović
相关产品推荐
相关产品推荐

