我正在尝试密码锁定我的应用程序,但它无法正常工作

时间:2013-03-14 18:35:33

标签: android if-statement password-protection

这是我的代码,我不知道我做错了什么。但它不起作用!理想情况下,我想要的是如果所有的文本视图都是空的,它应该干杯“请填写详细信息”或“保存”,但有些如何总是祝酒“保存”

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener {

EditText et1;
EditText et2;
EditText et3;
EditText et4;
EditText et5;
Button b;

FileOutputStream fos1;
FileOutputStream fos2;
FileOutputStream fos3;
FileOutputStream fos4;


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

    et1=(EditText) findViewById(R.id.editText1);
    et2=(EditText) findViewById(R.id.editText2);
    et3=(EditText) findViewById(R.id.editText3);
    et4=(EditText) findViewById(R.id.editText4);
    et5=(EditText) findViewById(R.id.editText5);

    b=(Button) findViewById(R.id.button1);


    b.setOnClickListener(this); 
}




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

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub

    String password=et1.getText().toString();
    String confirmPassword=et2.getText().toString();
    String secQues=et3.getText().toString();
    String secAns=et4.getText().toString();
    String hint=et5.getText().toString();


    if(password!=null && confirmPassword!=null && secQues!=null && secAns!=null && hint!=null)
    {
        Toast.makeText(MainActivity.this, "saved", Toast.LENGTH_SHORT).show();
    }
    else
    {
        Toast.makeText(MainActivity.this, "Please fill all the details.", Toast.LENGTH_SHORT).show();
    }
}

}

1 个答案:

答案 0 :(得分:1)

字符串将始终不是null,因为它们是由EditTexts生成的。但是,您获得的String可以是长度为0的空字符串("")。这意味着您应该比较String的长度。 TextUtils will work much better here

if(!TextUtils.isEmpty(password) && !TextUtils.isEmpty(confirmPassword)  && !TextUtils.isEmpty(secQues)   && !TextUtils.isEmpty(secAns)  && !TextUtils.isEmpty(hint)){
  Toast.makeText(MainActivity.this, "saved", Toast.LENGTH_SHORT).show();
}

此外,由于你有很多EditTexts,一种更好的检查方法是创建一个EditTexts数组,然后循环并检查长度。如果找到任何空的,则将布尔标志设置为false并退出循环。

boolean noneEmpty = true;

for (int x =0; x < editTextArray.length;x++)
{
  if (TextUtils.isEmpty(editTextArray[x].getText()))
  {
    noneEmpty = false;
    break;
  }
}

if(noneEmpty){
  Toast.makeText(MainActivity.this, "saved", Toast.LENGTH_SHORT).show();
}
else{
  Toast.makeText(MainActivity.this, "Please fill all the details.", Toast.LENGTH_SHORT).show();
}