Android Studio中EditText获取内容返回空字符串问题求助
解决EditText输入内容在Toast中显示为空的问题
这问题我太熟悉啦!你遇到的Toast始终为空的核心原因是获取输入文本的时机错误,咱们一步步来解决:
问题分析
你当前的Java代码里,把获取EditText文本的逻辑写在了OnClickListener的初始化代码块中:
button.setOnClickListener(new View.OnClickListener() { // 这里的代码只会在监听器创建时执行一次! EditText amount = (EditText) findViewById(R.id.amount); String amount_text =amount.getText().toString(); @Override public void onClick(View v) { Toast.makeText(betNow.this,amount_text ,Toast.LENGTH_LONG).show(); } });
这段代码在Activity初始化、按钮绑定监听器的时候就会执行getText().toString(),但此时用户还没来得及在EditText里输入任何内容,所以amount_text会被赋值为空字符串。之后不管用户输入什么内容,这个变量都不会再更新,点击按钮时自然只会弹出空Toast。
修正后的代码
只需要把获取文本的逻辑移到onClick()方法内部,这样每次点击按钮时,才会读取EditText当前的最新内容:
button.setOnClickListener(new View.OnClickListener() { // 可以把EditText的实例化移到外面,避免每次点击都重复查找控件 EditText amount = (EditText) findViewById(R.id.amount); @Override public void onClick(View v) { // 每次点击时才获取最新的输入文本 String amount_text = amount.getText().toString(); Toast.makeText(betNow.this, amount_text, Toast.LENGTH_LONG).show(); } });
额外优化建议
为了提升用户体验,还可以添加空内容判断,避免弹出无意义的空Toast:
@Override public void onClick(View v) { String amount_text = amount.getText().toString().trim(); // 先去除首尾空格 if (TextUtils.isEmpty(amount_text)) { Toast.makeText(betNow.this, "请输入内容哦", Toast.LENGTH_LONG).show(); } else { Toast.makeText(betNow.this, amount_text, Toast.LENGTH_LONG).show(); } }
(注意:使用TextUtils需要导入android.text.TextUtils包)
你的XML代码是完全没问题的,不需要做任何修改~
内容的提问来源于stack exchange,提问作者SANJOY DASGUPTA
相关产品推荐
相关产品推荐

