【问题标题】:Text doesn't change in variable after pressing button in Android在Android中按下按钮后文本不会改变变量
【发布时间】:2014-05-08 08:05:31
【问题描述】:

对于一个小的 android 项目,我正在制作一个登录屏幕。 我有变量,但一旦我填写它们并按下按钮,它们就会保持空白。

这些是我的变量:

private EditText email;
private EditText wachtwoord;
private Button loginButton;

我在这里填写:

        email = (EditText)findViewById(R.id.emailInput);
        wachtwoord = (EditText)findViewById(R.id.wachtwoordInput);
        loginButton = (Button)findViewById(R.id.loginButton);
        
        }
}

我的方法总是执行 catch 代码

    public void login(View view)
    {
        
        try {
        
        if(email.getText().toString() == "jolt_koens@hotmail.com" && wachtwoord.getText().toString() == "admin")
        {
            Toast.makeText(getApplicationContext(), "gelukt", Toast.LENGTH_SHORT).show();
        }
        else
        {
            Toast.makeText(getApplicationContext(), "mislukt", Toast.LENGTH_SHORT).show();
            loginButton.setEnabled(false);
        }
        

【问题讨论】:

  • 使用.equals()比较字符串email.getText().toString().equals("jolt_koens@hotmail.com")
  • 我有点困惑,为什么这些家伙一个接一个地给出答案,而 raghunandan 已经写在评论中了,而且奇怪的答案与评论相同。

标签: java android eclipse


【解决方案1】:

改变这一行:

if(email.getText().toString() == "jolt_koens@hotmail.com" && wachtwoord.getText().toString() == "admin")

到这里:

if(email.getText().toString().equals("jolt_koens@hotmail.com") && wachtwoord.getText().toString().equals("admin"))

【讨论】:

    【解决方案2】:

    使用这两种方法中的任何一种比较字符串

    方法一:

     if(((email.getText().toString().compareTo("jolt_koens@hotmail.com")==0) && (wachtwoord.getText().toString().compareTo("admin")==0))
     {
       do something
      }
    

    方法二:

    if(((email.getText().toString().equals("jolt_koens@hotmail.com") )&& (wachtwoord.getText().toString().equals("admin")))
        {
       do something
       }
    

    【讨论】:

    • 我尝试了这段代码,但我的应用程序继续执行 catch 代码,因为变量为空。
    【解决方案3】:
    public void login(View view)
        {
    
            try {
    
            if(email.getText().toString() .equals ("jolt_koens@hotmail.com") && wachtwoord.getText().toString().equals( "admin"))
            {
                Toast.makeText(getApplicationContext(), "gelukt", Toast.LENGTH_SHORT).show();
            }
            else
            {
                Toast.makeText(getApplicationContext(), "mislukt", Toast.LENGTH_SHORT).show();
                loginButton.setEnabled(false);
            }
    

    试试上面的代码。使用 .equals() 而不是 == 要了解这两个readthis的区别。

    【讨论】:

    • 我不知道它是怎么发生的,但它仍然继续执行 catch 方法。
    【解决方案4】:
    if(email.getText().toString().equalsIgnoreCase("jolt_koens@hotmail.com") && wachtwoord.getText().toString().equalsIgnoreCase ("admin"))
            {
                Toast.makeText(getApplicationContext(), "gelukt", Toast.LENGTH_SHORT).show();
            }
            else
            {
                Toast.makeText(getApplicationContext(), "mislukt", Toast.LENGTH_SHORT).show();
                loginButton.setEnabled(false);
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-18
      • 2015-12-16
      • 1970-01-01
      • 2020-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多