2017-08-03 73 views
0

我想創建一個基本的創建帳戶系統(它是我第一天使用Android工作室,所以不要太苛刻的判斷)每次我測試程序它只是默認直接其他甚至當兩個密碼完全不同時。非常感謝你提前給予的幫助。Android Studio .compareTo和.equals字符串不工作

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"); 
      } 
     } 
} 
+0

嘗試讓你按一下按鈕聽衆 – akhilesh0707

+0

從裏面的的EditText值是大小寫敏感的意識到這一點? –

+0

他們有默認值嗎?您在獲取VerifyPassword_txt一次,創建活動時,我認爲它在那一刻是空的,因此您需要將onClick中的值視爲@AkhileshPatil – Ivan

回答

0

正在嘗試在此時他們不會有任何值的onCreate它自己的時間,讓您的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將您的視圖設置爲您的活動的第一個方法。那時你的視圖中沒有任何用戶填充的數據。一旦視圖被填充並且您看到了用戶界面,用戶就會與之交互。因此,在用戶輸入之後需要執行的任何計算都必須基於操作(在本例中爲btn點擊),因此在操作時總是嘗試獲取數據。

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"); 
     } 
    } 
+0

不幸的是問題仍然存在。得到它了! – Bomba

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標準命名約定

例如

String passwordString = ""; 
+1

明白了!感謝:D – Bomba

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"); 
     } 
     } 
    }); 
1

你活動的初始化過程中進行硬編碼從輸入控件檢索值:

@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"); 
     } 

} 
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

關於修剪的好點 –

+0

@ScaryWombat謝謝先生 –