检查 EditText.isEmpty() 是否不起作用
Checking if EditText.isEmpty() not working
在我的代码中,我想检查密码字段是否 is empty
。我正在使用 isEmpty()
方法来完成它,但它不起作用。将 password
字段留空,返回到第二个 else-if 语句而不是第三个。
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText password = (EditText) findViewById(R.id.editText_Password);
Button enter = (Button) findViewById(R.id.button);
enter.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
String user_pass;
user_pass = password.getText().toString();
if (user_pass.equals("123")) {
Toast.makeText(MainActivity.this, "Welcome!", Toast.LENGTH_SHORT).show();
Intent I = new Intent("com.mavenmaverick.password.OKActivity");
startActivity(I);
}
else
if(user_pass != "123"){
Toast.makeText(MainActivity.this, "Incorrect", Toast.LENGTH_SHORT).show();
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(MainActivity.this);
dialogBuilder.setIcon(R.drawable.ic_launcher);
dialogBuilder.setTitle("Oops!");
dialogBuilder.setMessage("Incorrect Password");
dialogBuilder.setPositiveButton("OK", null);
dialogBuilder.show();
}
else
if (user_pass.isEmpty()) {
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(MainActivity.this);
dialogBuilder.setIcon(R.drawable.ic_launcher);
dialogBuilder.setTitle("Oops!");
dialogBuilder.setMessage("Password Field Cannot Be Empty");
dialogBuilder.setPositiveButton("OK", null);
dialogBuilder.show();
}
}
});
}
你的第二个 if 检查 user_pass != "123"
。从逻辑上讲,如果 user_pass
为空,则它不是 "123"
并且它甚至不会用于第三个 if。如果你想让它工作,切换你的第二个和第三个 if.
if (string == "aString") {
...
} else if (string != "somestring") {
...
} else if (string.isEmpty()) {
...
}
这不会检查字符串是否为空,它将在第 2 个 if 块停止,因为它不相等。
为避免这种情况,请先检查它是否为空。另外 不要 在比较字符串值时使用 ==
:
if (user_pass.isEmpty()) {
// It's empty
} else if (user_pass.equals("123")) {
// Equals
} else if (!user_pass.equals("123")){
// Not equals
}
与运算符的字符串比较错误。对于字符串比较,可以使用.equals()
方法。
顺便说一下你的情况,
随便用,
if (user_pass.isEmpty()) {
displayAlertDialog("Password Field Cannot Be Empty");
}else if(user_pass.equals("123"))
{
Toast.makeText(MainActivity.this, "Welcome!", Toast.LENGTH_SHORT).show();
Intent I = new Intent("com.mavenmaverick.password.OKActivity");
startActivity(I);
}else
{
Toast.makeText(MainActivity.this, "Incorrect", Toast.LENGTH_SHORT).show();
displayAlertDialog("Incorrect Password");
}
private void displayAlertDialog(String message)
{
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(MainActivity.this);
dialogBuilder.setIcon(R.drawable.ic_launcher);
dialogBuilder.setTitle("Oops!");
dialogBuilder.setMessage(message);
dialogBuilder.setPositiveButton("OK", null);
dialogBuilder.show();
}
if(user_pass != "123"){
您正在直接检查内存位置,它总是false。
使用 if(!user_pass.equals("123")){ 而不是。
在我的代码中,我想检查密码字段是否 is empty
。我正在使用 isEmpty()
方法来完成它,但它不起作用。将 password
字段留空,返回到第二个 else-if 语句而不是第三个。
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText password = (EditText) findViewById(R.id.editText_Password);
Button enter = (Button) findViewById(R.id.button);
enter.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
String user_pass;
user_pass = password.getText().toString();
if (user_pass.equals("123")) {
Toast.makeText(MainActivity.this, "Welcome!", Toast.LENGTH_SHORT).show();
Intent I = new Intent("com.mavenmaverick.password.OKActivity");
startActivity(I);
}
else
if(user_pass != "123"){
Toast.makeText(MainActivity.this, "Incorrect", Toast.LENGTH_SHORT).show();
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(MainActivity.this);
dialogBuilder.setIcon(R.drawable.ic_launcher);
dialogBuilder.setTitle("Oops!");
dialogBuilder.setMessage("Incorrect Password");
dialogBuilder.setPositiveButton("OK", null);
dialogBuilder.show();
}
else
if (user_pass.isEmpty()) {
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(MainActivity.this);
dialogBuilder.setIcon(R.drawable.ic_launcher);
dialogBuilder.setTitle("Oops!");
dialogBuilder.setMessage("Password Field Cannot Be Empty");
dialogBuilder.setPositiveButton("OK", null);
dialogBuilder.show();
}
}
});
}
你的第二个 if 检查 user_pass != "123"
。从逻辑上讲,如果 user_pass
为空,则它不是 "123"
并且它甚至不会用于第三个 if。如果你想让它工作,切换你的第二个和第三个 if.
if (string == "aString") {
...
} else if (string != "somestring") {
...
} else if (string.isEmpty()) {
...
}
这不会检查字符串是否为空,它将在第 2 个 if 块停止,因为它不相等。
为避免这种情况,请先检查它是否为空。另外 不要 在比较字符串值时使用 ==
:
if (user_pass.isEmpty()) {
// It's empty
} else if (user_pass.equals("123")) {
// Equals
} else if (!user_pass.equals("123")){
// Not equals
}
与运算符的字符串比较错误。对于字符串比较,可以使用.equals()
方法。
顺便说一下你的情况,
随便用,
if (user_pass.isEmpty()) {
displayAlertDialog("Password Field Cannot Be Empty");
}else if(user_pass.equals("123"))
{
Toast.makeText(MainActivity.this, "Welcome!", Toast.LENGTH_SHORT).show();
Intent I = new Intent("com.mavenmaverick.password.OKActivity");
startActivity(I);
}else
{
Toast.makeText(MainActivity.this, "Incorrect", Toast.LENGTH_SHORT).show();
displayAlertDialog("Incorrect Password");
}
private void displayAlertDialog(String message)
{
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(MainActivity.this);
dialogBuilder.setIcon(R.drawable.ic_launcher);
dialogBuilder.setTitle("Oops!");
dialogBuilder.setMessage(message);
dialogBuilder.setPositiveButton("OK", null);
dialogBuilder.show();
}
if(user_pass != "123"){
您正在直接检查内存位置,它总是false。
使用 if(!user_pass.equals("123")){ 而不是。