Android按钮点击文本为空问题:实现按钮文本随EditText内容更改
解决按钮点击后文本为空的问题
嘿,我帮你找出问题所在啦,这两个小细节出错导致了按钮文本为空、按钮缩小的情况:
- 过早获取输入框内容:你在
onCreate()方法里就直接获取了EditText的文本,这时候用户还没来得及输入任何内容,拿到的自然是空字符串。点击按钮时设置这个空文本,按钮用wrap_content就会因为没有内容而缩小。 - 密码输入框ID绑定错误:你把
passwordInput绑定到了R.id.username,而不是对应的R.id.password,这样根本拿不到密码输入框的内容,密码按钮和用户密码组合按钮的文本自然也不对。
下面是修复后的MainActivity.java代码,我把获取输入框内容的逻辑移到了按钮点击事件里,同时修正了ID绑定的问题:
package com.example.balkarrana.lab2; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; public class MainActivity extends AppCompatActivity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 先获取控件实例,不要提前取文本 final EditText usernameInput = (EditText)findViewById(R.id.username); final Button userButtonVariable = (Button)findViewById(R.id.userButton); // 修正密码输入框的ID绑定 final EditText passwordInput = (EditText)findViewById(R.id.password); final Button passButtonVariable = (Button)findViewById(R.id.passButton); final Button userPassButtonVariable = (Button)findViewById(R.id.userPassButton); userButtonVariable.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // 点击时才获取当前输入的文本 String userText = usernameInput.getText().toString(); userButtonVariable.setText(userText); } }); passButtonVariable.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // 点击时才获取当前输入的密码文本 String passText = passwordInput.getText().toString(); passButtonVariable.setText(passText); } }); userPassButtonVariable.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // 点击时同时获取两个输入框的文本并组合 String userText = usernameInput.getText().toString(); String passText = passwordInput.getText().toString(); String userPassText = userText + passText; userPassButtonVariable.setText(userPassText); } }); } }
这样修改后,每次点击按钮时都会实时获取用户当前输入的内容,按钮文本就会正确显示输入的内容,也不会因为空文本而缩小啦。
内容的提问来源于stack exchange,提问作者Balkar Rana




