我正在尝试开发一个登录页面,但是当点击一个按钮时,它会显示用户名为“”
public class MainActivity extends AppCompatActivity {
public static final String userNameValue="abc";
public static final String passwordValue="abc";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText editText1=(EditText)findViewById(R.id.userName);
final String valueUN= editText1.getText().toString();
EditText editText2=(EditText)findViewById(R.id.password);
final String valuePW=editText2.getText().toString();
Button loginButton=(Button)findViewById(R.id.button);
loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(valueUN==userNameValue && valuePW==passwordValue) {
Toast.makeText(MainActivity.this, "Login was Successfully", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this, "Username or password is incorrect", Toast.LENGTH_SHORT).show();
}
}
});
}
}
当我尝试使用调试器调试代码时,它将valueUN和valuePW显示为“”,为什么显示如此?它应该显示我输入的内容。
这不是问题的重复获取编辑文本字段的值因为该问题的人想要捕获在edittext中输入的值而mmy问题是编辑文本没有显示正确的值< / p>
答案 0 :(得分:2)
问题出在这里
EditText editText1=(EditText)findViewById(R.id.userName);
final String valueUN= editText1.getText().toString();
您在valueUN
创建的同时存储用户名的值。您必须了解创建edittext
的时间,其初始值为""
。但是,当用户在其上写东西然后执行任何操作时,例如点击你的案例中的按钮,那时你应该从edittext
获得当前值,而不是在它创建时。
在您的代码中,尝试使用onClickListener()
方法中的edittext获取值。
loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String valueUN = editText1.getText().toString();
String valuePW = editText2.getText().toString();
if(valueUN.equals(userNameValue) && valuePW.equals(passwordValue)) {
Toast.makeText(MainActivity.this, "Login was Successfully", Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(MainActivity.this, "Username or password is incorrect", Toast.LENGTH_SHORT).show();
}
}
});
P.S。:不要使用==
进行字符串比较。而是使用equals()
。