2

我对 Android 编程很陌生,所以如果这是一个愚蠢的查询,请原谅我。

我有一个密码字段的 Edittext 和一个提交密码的按钮。我还有几个隐藏的文本视图(显示密码是否正确/不正确),我想使用 if/else 语句将其变为可见。

当我运行代码(在 AVD 上)时,单击提交按钮时没有任何反应。从来没有。

知道这可能真的很简单,但是查看与此类似的问题的其他答案并没有帮助,我几天来一直在尝试找出我做错了什么......

..所以任何帮助都会非常感激。谢谢!!:D

-我使用 Eclipse 和 Android 4.2.2

这是Java部分:

final TextView success = (TextView) findViewById(R.id.textView1);
final TextView failure = (TextView) findViewById(R.id.textView2);
Button firstButton = (Button)findViewById(R.id.button1);
final EditText userPassword  = (EditText)findViewById(R.id.passwordField);
firstButton.setOnClickListener(
new View.OnClickListener(){
    public void onClick(View v){ 
        if(userPassword.getText().toString() == "pa$$word"){
            success.setVisibility(View.VISIBLE);
        }
        else{
           failure.setVisibility(View.VISIBLE);
        }
    }
});

XML:

<Button android:layout_height="wrap_content" 
android:layout_width="wrap_content" 
android:text="@string/button" 
android:layout_marginBottom="75dp" 
android:layout_centerHorizontal="true" 
android:layout_alignParentBottom="true" 
android:id="@+id/button1"/> 

<EditText android:layout_height="wrap_content" 
android:layout_width="wrap_content" 
android:layout_centerHorizontal="true" 
android:id="@+id/passwordField" 
android:inputType="textPassword" 
android:ems="10" 
android:layout_above="@+id/button1"> 

<requestFocus/> 
</EditText> 
<TextView android:layout_height="wrap_content"
 android:layout_width="wrap_content"
 android:text="@+string/pwCorrect"
 android:layout_marginBottom="124dp"
 android:layout_centerHorizontal="true"
 android:id="@+id/textView1"
 android:layout_above="@+id/passwordField"
 android:visibility="gone"/> 

<TextView android:layout_height="wrap_content"
android:layout_width="wrap_content" 
android:text="@+string/pwIncorrect" 
android:layout_centerHorizontal="true" 
android:id="@+id/textView2" 
android:visibility="gone" 
android:layout_centerVertical="true"/>
4

5 回答 5

2
 if(userPassword.getText().toString() == "pa$$word"){

Stringjava 中的 s 必须与equalsor进行比较equalsIgnoreCase。使用==您将比较字符串的地址

于 2013-05-28T13:42:16.660 回答
2

将字符串与equalsor进行比较equalsIgnoreCase

尝试这个

if(userPassword.getText().toString().equals("pa$$word"))
于 2013-05-28T13:42:31.650 回答
0

在 Java 中比较字符串时,您希望使用以下语法:

if(userPassword.getText().toString().equals("pa$$word"))

另外,我认为final您的EditTexts.

于 2013-05-28T13:44:06.250 回答
0

使用这个,有时密码是带有大写锁定的字母,所以最好使用 equalsIgnoreCase

if(userPassword.getText().toString().equalsIgnoreCase("pa$$word"))
于 2013-05-28T13:45:49.913 回答
0

使用此代码段

if(userPassword.getText().toString().equalsIgnoreCase("your valid passwor")){

    // do something 

}别的{

 //wrong password

}

享受:)请不要忘记给+1

于 2013-05-28T13:45:55.320 回答