我正在尝试开发一个登录页面,但是当单击按钮时,它显示我的用户名为“”
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 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()
。
关于java - 获取用户名 "",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46257736/