Android Studio中setOnClickListener无法获取EditText值的问题
解决Android中点击按钮无法获取EditText输入值的问题
嘿,我看到你遇到的问题了——在设置setOnClickListener的时候没法获取EditText的输入值对吧?咱们来拆解下问题根源,再给出修复方案:
问题原因
看你提供的代码片段,你在onCreate()方法里直接执行了:
final String question = question_EditText.getText().toString();
这时候Activity刚完成初始化,用户还没来得及在EditText里输入任何内容,所以这个question变量只会保存EditText的初始空值,后续用户输入的内容根本不会更新到这个变量里。
修复方案
把获取EditText文本的逻辑移到按钮的点击事件回调内部,这样每次用户点击按钮时,才会实时读取当前EditText里的输入内容。修改后的代码如下:
public class AddQuestionActivity extends AppCompatActivity { public Button add_question; public EditText question_EditText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_add_question); add_question = findViewById(R.id.addquestion); question_EditText = findViewById(R.id.question_add); // 设置点击事件 add_question.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 在这里实时获取EditText的输入值 String question = question_EditText.getText().toString().trim(); Log.d("finds","question1:"+question); // 可选:添加非空校验,避免处理无效数据 if(!TextUtils.isEmpty(question)){ // 这里写你处理问题内容的逻辑 } else { // 提示用户输入内容 Toast.makeText(AddQuestionActivity.this, "请输入问题内容", Toast.LENGTH_SHORT).show(); } } }); } }
额外提示
- 调用
trim()可以去掉输入内容前后的空格,避免用户输入无效的空白内容 - 记得导入
android.text.TextUtils和android.widget.Toast这两个类,不然代码会报错 - 如果需要在其他方法里复用这个输入值,也不要提前缓存,而是在需要的时候再调用
getText().toString()来获取最新内容
内容的提问来源于stack exchange,提问作者Jack Wilson
相关产品推荐
相关产品推荐

