【问题标题】:Java/Android Programming / EditText -> getText().toString() [duplicate]Java/Android 编程/EditText -> getText().toString() [重复]
【发布时间】:2012-12-25 06:58:48
【问题描述】:

可能重复:
How do I compare strings in Java?
why equals() method when we have == operator?

我在这里要做的就是将在文本字段小部件中输入的文本与给定字符串(“abc”)进行比较,然后将按钮文本设置为“错误通过”或“通过”好的”。但是,即使我输入了正确的“密码”,按钮文本也始终设置为“错误密码”。我究竟做错了什么?

public class FullscreenActivity extends Activity {


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_start);

    final Button button = (Button) findViewById(R.id.button);
    final EditText textedit = (EditText) findViewById(R.id.textedit);

    button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {

            if (textedit.getText().toString() == "abc") 
                button.setText("pass ok"); // doesn't work
            else 
                button.setText("wrong pass");

        }
    });
}

...

【问题讨论】:

    标签: java android android-edittext


    【解决方案1】:

    试试这个,使用“等于”。

     public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
    
    
        final Button button = (Button) findViewById(R.id.btnLogin);
        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
            EditText getpass = (EditText)findViewById(R.id.textedit);
    
                String pass = getpass.getText().toString();
    
                if(pass.equals("abc")){
                    Toast toast = Toast.makeText(getApplicationContext(), "pass ok", Toast.LENGTH_SHORT);
                    toast.show();
    
    
    
                }else{
                    Toast toast = Toast.makeText(getApplicationContext(), "wrong pass", Toast.LENGTH_SHORT);
                    toast.show();
                }
            }
        });
    
    }
    

    【讨论】:

    • 谢谢!现在我也知道 Toast 是什么了 :)
    【解决方案2】:

    Java/Android中的String不能和==比较,必须用equals()

    if (textedit.getText().toString().equals("abc")) 
    

    为什么你可以在How do I compare strings in Java?找到一个很好的解释

    【讨论】:

    • 我去看看。谢谢!
    【解决方案3】:

    一个问题是:

    if (textedit.getText().toString() == "abc") 
    

    应该是

    if (textedit.getText().toString().equals("abc") )
    

    更好:

     if ("abc".equals(textedit.getText().toString()))
    

    在比较字符串/对象时使用equals() 总是比使用== 更好

    == 检查引用是否相等。 equals() 检查内容是否相等。

    【讨论】:

    • 非常感谢。我有很多东西要学;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-02
    • 2019-06-14
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多