2017-07-04 42 views
-1

在Android工作室即時通訊作出一個簡單的用戶名和密碼代碼,如果用戶名和密碼編輯文本視圖中的值都是特定值(例如「蛋糕」和「機器人」 )但是當我測試它並輸入正確的用戶名和密碼值時,我被告知我輸入了錯誤的匹配?簡單的用戶名密碼代碼在Android不工作

這裏是主要的活動

public class MainActivity extends AppCompatActivity { 

EditText usernameET; 
EditText passwordET; 
Button SignIn; 

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

    usernameET = (EditText) findViewById(R.id.username); 
    passwordET = (EditText) findViewById(R.id.password); 
    SignIn = (Button) findViewById(R.id.signin); 
} 

public void SignIn(View view) { 

    String username = usernameET.getText().toString(); 
    String password = passwordET.getText().toString(); 

    if(username == "cake" && password == "robot"){ 
     Toast.makeText(this, "You Signed In", Toast.LENGTH_SHORT).show(); 
    }else{ 
     Toast.makeText(this, "Invalid Login", Toast.LENGTH_SHORT).show(); 
    } 
} 

}

主要業務佈局:

<EditText 
    android:id="@+id/username" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/password" 
    android:layout_alignStart="@+id/password" 
    android:layout_marginBottom="15dp" 
    android:hint="@string/username" 
    android:inputType="text" /> 

<EditText 
    android:id="@+id/password" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 

    android:hint="@string/password" 
    android:inputType="text" /> 

<Button 
    android:id="@+id/signin" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/sign_in" 
    android:onClick="SignIn" 
    android:layout_below="@+id/password" 
    android:layout_centerHorizontal="true" /> 

enter image description here

這究竟是爲什麼?

+0

,而不是 「==」 使用 「.equals」 來比較兩個字符串 – sumit

+0

嘗試username.equals( 「蛋糕」)&& password.equals (「機器人」)處於if狀態 –

回答

0

我認爲你必須寫

username.equals( 「蛋糕」)& & password.equals( 「機器人」)

原因是你必須檢查edittext的內容而不是參考

當你使用==它會檢查內存中的引用ory,而你必須檢查數據。

0

Reeplace username == "cake" && password == "robot"username.equals("cake") && password.equals("robot")

0

你比較字符串..所以你需要使用.equals

public void SignIn(View view) { 

    String username = usernameET.getText().toString(); 
    String password = passwordET.getText().toString(); 

    if(username.equals("cake") && password.equals("robot")){ 
     Toast.makeText(this, "You Signed In", Toast.LENGTH_SHORT).show(); 
    }else{ 
     Toast.makeText(this, "Invalid Login", Toast.LENGTH_SHORT).show(); 
    } 
} 
0

在Java中,== B用來比較兩個引用,而不是對象本身。

因此,如果您有2個要比較的字符串,請使用String上的equals()方法。對於例如, username.equals( 「蛋糕」)& & password.equals( 「機器人」)

0

更改您的病情是否像

if(username.equalsIgnoreCase("cake") && password.equalsIgnoreCase("robot") 
1
String username = usernameET.getText().toString(); 
String password = passwordET.getText().toString(); 

「==」 的參考ID匹配字符串。因此,字符串用戶名是堆中的一個對象,其reference_id將與字符串「cake」不同,而String類的.eqauls()方法會比較字符串的內容。所以,你的情況使用

if(username.equals("cake") && password.equals("robot")){ 
    Toast.makeText(this, "You Signed In",Toast.LENGTH_SHORT).show(); 
}else{ 
    Toast.makeText(this, "Invalid Login", Toast.LENGTH_SHORT).show(); 
} 

更多參考 http://www.studytonight.com/java/string-handling-in-java.php