2013-03-04 119 views
0

我正在制作一个简单的密码应用程序。为什么我的if语句没有执行并显示Toast?

就像我在VB中做的那样。

我有我的代码

package com.example.password; 
import android.widget.*; 

import com.example.password.R; 
import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 

public class MainActivity extends Activity { 
    Button btn1; 
    EditText et1; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     btn1 = (Button) findViewById(R.id.button1); 
     et1 = (EditText) findViewById(R.id.editText1); 
    btn1.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

     if ("u" == et1.getText().toString()){ 
      Toast.makeText(MainActivity.this, "Yay!! GOOD GUESS", Toast.LENGTH_LONG).show(); 

     } 

    } 
    }); 

} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; his adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

} 

没有编译或运行时错误,但我没有得到任何Toast弹出时,我得到了“密码”的权利。

回答

4

变化

if ("u" == et1.getText().toString()) 

if ("u".equals(et1.getText().toString())) 

你也可以做

if (et1.getText().toString().equals("u")) 

但我相信第一种方式是对NPE安全的,但如果你检查null那么它不真的不重要。您目前正在执行的方式会检查它们是否引用同一个对象。使用.equals("string")检查该值相等,与String

Java String function

+0

感谢一大堆打交道时!所以我应该总是使用这种方法? – user2130068 2013-03-04 02:51:07

+0

当检查String的值是否相等时,是的!当我放入我的编辑时,你的方式会检查它们是否是同一个对象,但不一定是相同的值。欢迎您使用BUNCH! :) – codeMagic 2013-03-04 02:52:02

+1

道具为你避开NPE的第一种方式。我会说坚持 – ElefantPhace 2013-03-04 02:53:16