java - 获取用户名 ""

标签 java android

我正在尝试开发一个登录页面,但是当单击按钮时,它显示我的用户名为“”

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/

相关文章:

Android 应用程序未正确加载到 AVD 中

java - 如果我将变量设置为 final,事情会运行得更快吗?

java - 如何在Spring bean中启动一个线程

java - 在不同时区之间格式化时间的正确方法是什么?

android - throw 后触摸被拦截

android - 仅在针对较低 API 时请求 Android M 权限

java - 如何从 Firestore 查询中排除元素?

java - ConcurrentHashMap.computeIfAbsent 中的赋值是线程安全的吗?

java - 套接字说它已关闭但实际上没有

java - 如何为 Tomcat native /APR SSL 启用调试日志记录