PDA

View Full Version : دسترسی به متغیر های موجود در res/values/strings.xml در صفحات .java



Ghadiri_S
پنج شنبه 13 مهر 1391, 14:50 عصر
با سلام مجدد
میخواستم بدونم چطور می توانم مقدار یک متغییر رو که در strings.xml ایجاد کردم رو مقدارش رو تغییر بدم. البته در زمان اجرای برنامه.
برای مثال میخوام تو قسمت onCreate اکتیویتی که ساختم بتونم مقدار hello_world رو تغییر بدم.

با تشکر

Ghadiri_S
پنج شنبه 13 مهر 1391, 15:42 عصر
دوستان من با یک مشکل عجیب هم برخورد کردم!!! 2 تا EditText رو روی صفحه گذاشتم به همراه یک Button حالا میخوام کاربر هر وقت روی دکمه کلیک کرد ببینم مقادیر وارد شده در 2 تا EditText برابر هست یا نه برای این کار کد زیر رو تو رویداد کلیک دکمه نوشتم



EditText t1 = (EditText) findViewById(R.id.txt1);
EditText t2 = (EditText) findViewById(R.id.txt2);

if (t1.getText().toString()==t2.getText().toString()) {
// True
}else{
// False
}



اما مشکل اینجاست که در هر شرایطی بخش else فعال میشه، مشکل کد من کجاست!!!؟

Ghadiri_S
پنج شنبه 13 مهر 1391, 21:48 عصر
من یک چیزی تو یکی از وبلاگ های خارجی پیدا کردم که نوشته برای مقایسه دو رشته در جاوا باید از متد String.equals استفاده کرد نه از == متن زیر رو نقل قول میکنم



When using java, you must compare Strings using the String.equals(String) method.
The == comparison checks to see if the String object values are equal, which undoubtedly they are not.


اتفاقا من کدی رو که بالا نوشته بودم رو به صورت زیر تغییر دادم و مشکل حل شد، اما از دوستانی که تو کار با جاوا حرفه ای تر هستن خواهش میکنم یک مقدار توضیح بیشتری بدن چون راستش من قانع نشد و دلیل اصلی این روش رو میخواهم بدونم و آیا روش استفاده شده String.equals یک روش بهینه هست یا روش بهتری هم وجود داره

و اگر این روش درستی هست من چطور میتونم عدم تساوی رو بررسی کنم؟ یعنی بجای =! باید از چه متدی استفاده کرد؟

با تشکر از لطف دوستان



EditText t1 = (EditText) findViewById(R.id.txt1);
EditText t2 = (EditText) findViewById(R.id.txt2);

if (t1.getText().toString().equals(t2.getText().toStr ing())) {
// True
}else{
// False
}

dr_jacky_2005
یک شنبه 16 مهر 1391, 09:49 صبح
دوستان من با یک مشکل عجیب هم برخورد کردم!!! 2 تا EditText رو روی صفحه گذاشتم به همراه یک Button حالا میخوام کاربر هر وقت روی دکمه کلیک کرد ببینم مقادیر وارد شده در 2 تا EditText برابر هست یا نه برای این کار کد زیر رو تو رویداد کلیک دکمه نوشتم



EditText t1 = (EditText) findViewById(R.id.txt1);
EditText t2 = (EditText) findViewById(R.id.txt2);

if (t1.getText().toString()==t2.getText().toString()) {
// True
}else{
// False
}



اما مشکل اینجاست که در هر شرایطی بخش else فعال میشه، مشکل کد من کجاست!!!؟

توی جالا == کار نمیکنه. بجاش: equal

dr_jacky_2005
یک شنبه 16 مهر 1391, 09:51 صبح
من یک چیزی تو یکی از وبلاگ های خارجی پیدا کردم که نوشته برای مقایسه دو رشته در جاوا باید از متد String.equals استفاده کرد نه از == متن زیر رو نقل قول میکنم



When using java, you must compare Strings using the String.equals(String) method.
The == comparison checks to see if the String object values are equal, which undoubtedly they are not.


اتفاقا من کدی رو که بالا نوشته بودم رو به صورت زیر تغییر دادم و مشکل حل شد، اما از دوستانی که تو کار با جاوا حرفه ای تر هستن خواهش میکنم یک مقدار توضیح بیشتری بدن چون راستش من قانع نشد و دلیل اصلی این روش رو میخواهم بدونم و آیا روش استفاده شده String.equals یک روش بهینه هست یا روش بهتری هم وجود داره

و اگر این روش درستی هست من چطور میتونم عدم تساوی رو بررسی کنم؟ یعنی بجای =! باید از چه متدی استفاده کرد؟

با تشکر از لطف دوستان



EditText t1 = (EditText) findViewById(R.id.txt1);
EditText t2 = (EditText) findViewById(R.id.txt2);

if (t1.getText().toString().equals(t2.getText().toStr ing())) {
// True
}else{
// False
}


آره ، بهینس. این داستان برمیگرده به این که تمام متغیرها توی جاوا ، مثل اینتجر ، ... ساختار داخلیشون استراکچر است ولی این یدونه ابله ( رشته ) ، کلاسه ! :|

واسه عدم تساوی هم یه علامت تعجب اولش بزار.