View Full Version : ارتباط یه متغیر در 2 کلاس
nimar9
سه شنبه 23 اردیبهشت 1393, 21:46 عصر
سلام
من یه متغیر دارم که توی کلاس OnCreate تعریف میشه و مقدار داده میشه و تو یه ماژول دیگه به اسم MyTask فراخوانی و استفاده شه.
میخوام بدونم چه جوری از این متغیر استفاده کنم .
وقتی تو قسمت کلاس دوم تعریف میکنم ارور میده با CTRL+1 و انتخاب یکدوم از اون لیست ها هم به جواب نرسیدم هر 7 تا شونو تست کردم اما نشد. (فایل ضمیمه)
منتشر جواب هستم
Ariel Ortega
سه شنبه 23 اردیبهشت 1393, 22:05 عصر
فرض کنیم 2 تا کلاس داری،
کلاس اول اکتیویتی که onCreate داره، اسمش رو میزارم MainActivity
کلاس دوم هم MyTask
و همچنین فرض کنیم که هیچ کدوم از این کلاسها Inner Class نیست!
حالا دو حالت داری،
یا متغیری که تو MainAvctivity تعریف کردی رو استاتیک کنی(public بزارش)(این مدل متغیر رو اصطلاحا بهش میگن class member)، بعد موقع استفاده تو MyTask کافیه با اسم کلاس صداش کنی، اینطوری: MainActivity.your_variable_name
یا اینکه استاتیک نکنی(این حالت میشه instance member)، تو این حالت باید یه ابجکت از کلاس MainActivity توی کلاس MyTask داشته باشی که بتونی با اون آبجکت از اون متغیر استفاده کنی.
nimar9
چهارشنبه 24 اردیبهشت 1393, 00:26 صبح
داداش ببین 2تا کلاس من تو یه اکتیویتی هست اونوحت باید چی کار کنم با کد توضیح بدی بهتر متتوجه میشم
shahin bahari
چهارشنبه 24 اردیبهشت 1393, 11:15 صبح
سلام
من یه متغیر دارم که توی کلاس OnCreate تعریف میشه و مقدار داده میشه و تو یه ماژول دیگه به اسم MyTask فراخوانی و استفاده شه.
میخوام بدونم چه جوری از این متغیر استفاده کنم .
وقتی تو قسمت کلاس دوم تعریف میکنم ارور میده با CTRL+1 و انتخاب یکدوم از اون لیست ها هم به جواب نرسیدم هر 7 تا شونو تست کردم اما نشد. (فایل ضمیمه)
منتشر جواب هستم
onCreate که تابع هست نه کلاس!
برای اینکه توی یه کلاس تمام تابع هاش به متغییر ها دسترسی داشته باشند اون رو بیرون ازتابع ها تعریف کنید.(یه خط بالاتر از اونجایی که onCreate رو تعریف کردید.
Ariel Ortega
چهارشنبه 24 اردیبهشت 1393, 15:09 عصر
داداش ببین 2تا کلاس من تو یه اکتیویتی هست اونوحت باید چی کار کنم با کد توضیح بدی بهتر متتوجه میشم
متغیری که تو کلاس Activity تعریف میکنی، باید global باشه،
بعد اینکه تو inner class باید داخل متد به اون متغیر دسترستی داشته باشید، اینطوری:
public class Activity {
private String str = null;
public Activity() {
str = "Ariel";
}
public class InnerTest {
public void printStr() {
System.out.println(str);
}
}
}
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.