EditText内容分次输入后在TextView中显示为段落的实现问题
解决EditText多次输入整合到TextView显示段落的问题
嘿,我看你现在要实现的是把用户多次在EditText里输入的内容,整合起来在TextView里显示成连贯的段落对吧?先说说你现有代码里的几个小问题:
- 每次点击都新建StringBuilder:这样每次点击按钮时,之前输入的内容都会被清空,根本存不住历史输入;
- 用BufferedReader读EditText完全没必要:EditText的内容直接通过
getText().toString()就能获取,BufferedReader是用来处理文件、流这类场景的,用在这纯属绕弯路啦。
下面给你一个简单可行的实现方案:
步骤1:声明全局的StringBuilder
把StringBuilder放在Activity的成员变量位置,这样它的生命周期和Activity一致,能一直保存历史输入的内容:
private StringBuilder mCombinedText = new StringBuilder(); private EditText ed1; private TextView tvResult; private Button b1;
步骤2:完善按钮点击事件
在点击事件里,我们直接获取EditText的输入内容,追加到全局的StringBuilder中,然后更新TextView,最后清空EditText方便下次输入:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.your_layout); // 替换成你的布局ID ed1 = findViewById(R.id.ed1); tvResult = findViewById(R.id.tv_result); // 替换成你的TextView ID b1 = findViewById(R.id.b1); b1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String inputContent = ed1.getText().toString().trim(); // 跳过空输入,避免添加无用的换行或空格 if (!inputContent.isEmpty()) { // 如果已有内容,先加个换行(如果要连续句子就换成空格),让段落更清晰 if (mCombinedText.length() > 0) { mCombinedText.append("\n"); } // 追加本次输入的内容 mCombinedText.append(inputContent); // 更新TextView显示整合后的段落 tvResult.setText(mCombinedText.toString()); // 清空EditText,方便用户下次输入 ed1.setText(""); } } }); }
小细节调整
- 如果希望每次输入的内容是连续的句子(不是分段),把
mCombinedText.append("\n")改成mCombinedText.append(" ")就行; - 可以根据需求添加输入提示,比如当用户输入空内容时,用Toast提示一下。
这样就能实现你想要的效果:用户每次输入内容点击按钮,EditText清空,TextView里一直保留所有输入的内容,整合为段落显示~
内容的提问来源于stack exchange,提问作者user2173696
相关产品推荐
相关产品推荐

