You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio:如何获取已输入内容的EditText的Hint并显示到TextView

解决方案

核心问题分析

你现有代码存在两个关键错误:

  1. 未在Intent中传递Hint文本,导致Result页面无法获取hintEditText1、hintEditText2等变量
  2. 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ć

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 22:22:51