我对Android编程很新,所以如果这是一个愚蠢的查询,请原谅我。
我有一个用于密码字段的Edittext和一个用于提交密码的按钮。我还有一些隐藏的Textview(显示密码是否正确/不正确),我想使用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"/>
答案 0 :(得分:2)
if(userPassword.getText().toString() == "pa$$word"){
java中的 String
必须与equals
或equalsIgnoreCase
进行比较。使用==
,您将比较字符串的地址
答案 1 :(得分:2)
将字符串与equals
或equalsIgnoreCase
试试这个
if(userPassword.getText().toString().equals("pa$$word"))
答案 2 :(得分:0)
在比较Java中的字符串时,您需要使用以下语法:
if(userPassword.getText().toString().equals("pa$$word"))
另外,我认为final
上不需要EditTexts
。
答案 3 :(得分:0)
使用此功能,有时密码是带字母大写字母的字母,所以最好使用equalsIgnoreCase
if(userPassword.getText().toString().equalsIgnoreCase("pa$$word"))
答案 4 :(得分:0)
使用此代码段
if(userPassword.getText().toString().equalsIgnoreCase("your valid passwor")){
// do something
}否则{
//wrong password
}
享受:) 请不要忘记给+1