Android新手求助:EditText始终返回空值问题
解决EditText获取值始终为空的问题
嘿,我看到你遇到的问题了——每次点击按钮都提示EditText为空,这是个新手很容易踩的小坑,咱们来快速搞定它!
问题根源
你在onCreate方法里就提前把name变量赋值为editText.getText().toString()了:
final String name = editText.getText().toString();
这时候Activity刚初始化完成,EditText里还没有任何用户输入,所以name从一开始就是空字符串。之后点击按钮时,你判断的还是这个初始的空值,而不是用户点击按钮时EditText里的实时内容。
修正后的代码
把获取EditText文本的逻辑移到按钮的onClick事件里,这样每次点击都会读取当前的输入内容:
package task.com.helloworld; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends AppCompatActivity { Button button; TextView textView; EditText editText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button)findViewById(R.id.button); textView = (TextView)findViewById(R.id.textView6); editText = (EditText)findViewById(R.id.editText); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // 把获取文本的代码移到这里,每次点击都读取实时内容 String name = editText.getText().toString(); // 可选:用trim()去掉前后空格,避免空输入或空格被误判 // String name = editText.getText().toString().trim(); if(TextUtils.isEmpty(name)) Toast.makeText(MainActivity.this, "Edit Text is Empty", Toast.LENGTH_LONG).show(); else Toast.makeText(MainActivity.this, "Edit Text is not Empty", Toast.LENGTH_LONG).show(); } }); } }
额外小提示
如果想避免用户只输入空格就被判定为有效内容,可以在获取文本后加上trim(),把前后的空白字符去掉,这样判断逻辑会更严谨~
内容的提问来源于stack exchange,提问作者Biswajit
相关产品推荐
相关产品推荐

