ورود

View Full Version : مقایسه مقدار یک فیلد با EditText



reza_devel0per
چهارشنبه 19 تیر 1392, 19:16 عصر
سلام،
فرض کنید من بطور خیلی خلاصه ، برای فرم لاگین برنامه م این کدها رو نوشتم :
btnLogin.setOnClickListener(new OnClickListener()
{

@Override
public void onClick(View arg0)
{
DBController controller = new DBController(this);
Cursor tmp_cursor = controller.ReadQuery("select pass from Tb_User");
if (tmp_cursor.getCount() != 0)
{
String x = tmp_cursor.getString(0).toString();
String y = txtPass.getText().toString();
if (x == y)
startActivity(new Intent(Frm_Login.this, Frm_Main.class));
else
txtPass.setText("");
}
}
});

توضیح :
1- کلاس DBController همون کلاسی هستش که از SQLiteOpenHelper ارث میبره.
2- متد ReadQuery متدی هستش که برای اجرای Query ها نوشتم و این متد نتیجه رو به صورت cursor برمی گردونه.

مشکل من اینه که وقتی که رمز رو درست وارد میکنم ، یعنی x و y کاملاً مساوی هستن، باز قسمت else رو اجرا میکنه! حتی دو تا EditText گذاشتم و قبل از if مقدار x و y رو توی هر کدوم از EditText ها بصورت جداگانه گذاشتم و دیدم که مقادیرشون کاملاً مساوی هستش. ضمنا از Trim هم استفاده کردم.

نمیدونم مشکل چیه؟! اگه ممکنه راهنماییم بفرمایید.
ممنون

rubiks.kde
چهارشنبه 19 تیر 1392, 20:32 عصر
سلام،
فرض کنید من بطور خیلی خلاصه ، برای فرم لاگین برنامه م این کدها رو نوشتم :
btnLogin.setOnClickListener(new OnClickListener()
{

@Override
public void onClick(View arg0)
{
DBController controller = new DBController(this);
Cursor tmp_cursor = controller.ReadQuery("select pass from Tb_User");
if (tmp_cursor.getCount() != 0)
{
String x = tmp_cursor.getString(0).toString();
String y = txtPass.getText().toString();
if (x == y)
startActivity(new Intent(Frm_Login.this, Frm_Main.class));
else
txtPass.setText("");
}
}
});

توضیح :
1- کلاس DBController همون کلاسی هستش که از SQLiteOpenHelper ارث میبره.
2- متد ReadQuery متدی هستش که برای اجرای Query ها نوشتم و این متد نتیجه رو به صورت cursor برمی گردونه.

مشکل من اینه که وقتی که رمز رو درست وارد میکنم ، یعنی x و y کاملاً مساوی هستن، باز قسمت else رو اجرا میکنه! حتی دو تا EditText گذاشتم و قبل از if مقدار x و y رو توی هر کدوم از EditText ها بصورت جداگانه گذاشتم و دیدم که مقادیرشون کاملاً مساوی هستش. ضمنا از Trim هم استفاده کردم.

نمیدونم مشکل چیه؟! اگه ممکنه راهنماییم بفرمایید.
ممنون

شرط رو به این صورت بنویسید
if(x.equals(y))

reza_devel0per
چهارشنبه 19 تیر 1392, 21:08 عصر
بله ، درست شد! واقعاً ممنونم. ولی دلیلش چیه؟ به طور تئوریک که اون کد درست به نظر میرسه!

rubiks.kde
چهارشنبه 19 تیر 1392, 21:54 عصر
بله ، درست شد! واقعاً ممنونم. ولی دلیلش چیه؟ به طور تئوریک که اون کد درست به نظر میرسه!

بله ، دلیل میتونه تعریف نشدن == برای کلاس String باشه

arash.k
یک شنبه 23 تیر 1392, 01:35 صبح
بله ، درست شد! واقعاً ممنونم. ولی دلیلش چیه؟ به طور تئوریک که اون کد درست به نظر میرسه!
فکر میکنم دلیلش این باشه که هر ُشی String به مکان متفاوتی ارجاع میده . حتی اگر مقدار برابر داشته باشن. در واقع در اشیاء با == شما آدرس رو مقایسه میکنید نه مقدار رو.