Android Studio .compareTo和.equals,字符串不起作用

时间:2017-08-03 05:48:42

标签: java android

我正在尝试创建一个基本的创建帐户系统(它是我使用android工作室的第一天所以不要太严厉地判断)每次我测试程序时它只是默认直接到其他地方即使两个密码差别很大。非常感谢大家的帮助。

public class CreateAccount extends AppCompatActivity {

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

    Button Submit_btn = (Button) findViewById(R.id.Submit_btn);

    final EditText Username_txt = (EditText)findViewById(R.id.Username_txt);
    final EditText Email_txt = (EditText)findViewById(R.id.Email_txt);
    final EditText Password_txt = (EditText)findViewById(R.id.Password_txt);
    final EditText VerifyPassword_txt = (EditText)findViewById(R.id.VerifyPassword_txt);

    final TextView Error_txt = (TextView)findViewById(R.id.Error_txt);

    final String Username_string = Username_txt.getText().toString();
    final String Email_string = Email_txt.getText().toString();
    final String Password_string = Password_txt.getText().toString();
    final String VerifyPassword_string = VerifyPassword_txt.getText().toString();


    Submit_btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            if (!Password_string.equals(VerifyPassword_string)) {
                Error_txt.setText("Passwords must be matching");

            } else {
                Error_txt.setText("No Error");
            }
      }
}

6 个答案:

答案 0 :(得分:2)

您应该添加 trim()

  

返回一个字符串,其值为此字符串,带有任何前导和   尾部空格已删除。

Submit_btn.setOnClickListener(new View.OnClickListener() 
 {
    @Override
    public void onClick(View view) 
    {

    final String Password_string = Password_txt.getText().toString().trim();
    final String VerifyPassword_string = VerifyPassword_txt.getText().toString().trim();

        if (!Password_string.equals(VerifyPassword_string)) 
        {
            Error_txt.setText("Passwords must be matching");

        } else 
        {
            Error_txt.setText("No Error");
        }
    }
 });

答案 1 :(得分:1)

更改onClick方法以检索值

public void onClick(View view) {
    Password_string = Password_txt.getText().toString();
    VerifyPassword_string = VerifyPassword_txt.getText().toString();

    if (!Password_string.equals(VerifyPassword_string)) {
            Error_txt.setText("Passwords must be matching");
    } else {
            Error_txt.setText("No Error");
    }
}

注意

还尝试使用java标准命名约定

e.g。

String passwordString = "";

答案 2 :(得分:1)

您在Activity的初始化期间对输入小部件中检索到的值进行硬编码:

@Override
protected void onCreate(Bundle savedInstanceState) {

... 
    final String Username_string = Username_txt.getText().toString();
    final String Email_string = Email_txt.getText().toString();
    final String Password_string = Password_txt.getText().toString();
    final String VerifyPassword_string = 
                             VerifyPassword_txt.getText().toString();
   ...
}

您遇到密码输入问题,但电子邮件和用户输入也会遇到同样的问题 你应该动态地获得所有这些。

例如,对于密码输入:

public void onClick(View view) {

        if (!Password_txt.getText().toString().equals
              (VerifyPassword_txt.getText().toString())) {
            Error_txt.setText("Passwords must be matching");    
        } else {
            Error_txt.setText("No Error");
        }

}

答案 3 :(得分:0)

试试这个

 Submit_btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {

    final String Password_string = Password_txt.getText().toString();
    final String VerifyPassword_string = VerifyPassword_txt.getText().toString();
        if (!Password_string.equals(VerifyPassword_string)) {
            Error_txt.setText("Passwords must be matching");

        } else {
            Error_txt.setText("No Error");
        }
  }

答案 4 :(得分:0)

我现在尝试了一些改变

final String Username_string = Username_txt.getText().toString();
final String Email_string = Email_txt.getText().toString();
//final String Password_string = Password_txt.getText().toString();
//final String VerifyPassword_string = VerifyPassword_txt.getText().toString();


Submit_btn.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View view) {
         String passwordStr= Password_txt.getText().toString();
         String passwordConfirmStr=VerifyPassword_txt.getText().toString();
         if (!passwordStr.equals(passwordConfirmStr)) {
            Error_txt.setText("Passwords must be matching");
         } else {
            Error_txt.setText("No Error");
         }
      }
  });

答案 5 :(得分:0)

您正在尝试在onCreate it self时获取EditText的值,此时它们将不会包含任何值,因为您可能只在屏幕打开后键入它们。因此,您只应在onclick上进行此计算 -

Submit_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {

final String Password_string = Password_txt.getText().toString();
final String VerifyPassword_string = VerifyPassword_txt.getText().toString();
    if (!Password_string.equals(VerifyPassword_string)) {
        Error_txt.setText("Passwords must be matching");

    } else {
        Error_txt.setText("No Error");
    }
}

请在此处了解活动生命周期。调用onCreate将您的View设置为您的Activity的第一种方法。那时您的视图中没有任何用户填充的数据。填充视图并看到UI后,用户就会与之交互。因此,在用户输入后您需要执行的任何计算都必须基于操作(在这种情况下是您的btn单击),因此尝试始终在操作时获取数据。