【问题标题】:Edittext string comparison not working [duplicate]Edittext字符串比较不起作用[重复]
【发布时间】:2017-04-30 18:36:59
【问题描述】:

我有一个用于个人应用程序的 android studio 项目,它附有一个简单的密码,以验证我是使用它的人。我的代码如下:

public class StartActivity extends AppCompatActivity {
    FloatingActionButton authenticate;
    EditText passwordInput;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_start);

        authenticate = (FloatingActionButton) findViewById(R.id.authenticateCheck);
        passwordInput = (EditText) findViewById(R.id.inputPass);

        authenticate.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(passwordInput.getText().toString() == "Magic") {
                    Intent i = new Intent(StartActivity.this, LilyMainInterface.class);
                    startActivity(i);
                } else {
                    passwordInput.setText("");
                }
            }
        });
    }
}

我已经导入了所有必要的类,但没有一个能正常工作。我没有看到任何问题,当我删除 if 语句时,代码成功打开了正确的活动。除此之外,它一直认为密码不匹配。

编辑: 我改了

==

.equals()

正如评论中所说。它有效,但是我之前没有这样做的原因是因为 android studio 给我一条消息说:

字符串值与 '==' 进行比较,而不是 'equals()'。

为什么 .equals() 工作,即使 android studio 明确声明不是这样?

【问题讨论】:

  • 您没有从您的edittext passwordInput 中获取要与之匹配的文本。将if(passwordInput.toString() == "Magic") 替换为if(passwordInput.getText..toString() == "Magic")

标签: android android-studio


【解决方案1】:

你需要匹配来自edittext的字符串,比如:

  passwordInput = (EditText) findViewById(R.id.inputPass);

  if(passwordInput.getText().toString().equals("Magic")) {
        Intent i = new Intent(StartActivity.this, LilyMainInterface.class);
        startActivity(i);
    }

【讨论】:

  • 为什么要修剪?密码很容易有前导或尾随空格。
  • 好吧……我明白了……首先是密码……!
  • @newbRaymond 如果答案有帮助,欢迎堆栈溢出...您应该通过单击答案旁边的勾号将其标记为正确..thankx
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-20
  • 2021-09-02
  • 2014-05-24
  • 1970-01-01
  • 2014-04-03
  • 2012-01-22
相关资源
最近更新 更多