私は 3 時間把握しようとした興味深い問題があります.. Android でログイン ページを作成しています。HttpClient を使用してユーザー名とパスワードの値を PHP ページに送信しています。以下のコードが表示されるまで真の結果が得られます。
button_login_submit.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();
postParameters.add(new BasicNameValuePair("username", et_username.getText().toString()));
postParameters.add(new BasicNameValuePair("password", et_password.getText().toString()));
String response = null;
try
{
response = CustomHttpClient.executeHttpPost("http://10.0.2.2/corner1/login.php", postParameters);
String res=response.toString();
//here, the value of "res" variable is the exactly what I want.
if(!res.equals("0")) // but in here, the value of "res.equals("0")" is always false. So the value of inside if is always true!! but why????
{
if(!res.equals("01"))
{
tv_login_error.setText("Success");
Intent main_page = new Intent(getApplicationContext(), Main_Activity.class);
main_page.putExtra("id",res);
//startActivity(main_page);
//finish();
}
else
{
tv_login_error.setText("False Username or Password");
}
}
else
{
tv_login_error.setText("Please try again using your full usurname or password ");
}
}
catch (Exception e)
{
tv_login_error.setText(e.toString());
}
}
});
「res」の変数が「0」の場合、空の値があることを意味します。「01」の場合、ユーザーは存在しません。それ以外の場合、PHP ページからユーザーの ID が送信されます。"res.equals("0") が常に false になるのはなぜですか?
問題が解決しました!!!!問題は、のコードから来る res の値がString res=response.toString();
「\n」で来ることです。したがって、値を比較する場合は、単語の末尾に「\n」を追加する必要があります。例えばres.equals("0\n")