ورود

View Full Version : تغییر مقدار متغیر سراسری؟



ilalia2
سه شنبه 04 اردیبهشت 1397, 16:21 عصر
من یک متغیر سراسری میخوام که در یک اکتیویتی اون رو مقداردهی کنم و در اکتیویتی های دیگه فراخوانیش کنم؛
منتها هر چی مقدار دهی میکنمش وقتی در اکتیویتی های دیگه فراخوانی میکنم فقط بازم مقدار صفر رو بر میگردونه!
چیکار کنم؟

farhad_shiri_ex
چهارشنبه 05 اردیبهشت 1397, 10:27 صبح
یعنی می خواهید یه متغیر public static رو مقدار بدید.!
دوست عزیز متغیر های استاتیک در heap حافظه ذخیره میشن پس بنابراین فقط یکبار مقدار میگیرن البته اگر از نوع داده اولیه باشن پس دیگه نمی تونید از اکتیویتی های دیگه بهش مقدار بدید.!
حالا برای رفع اشکال بهتره که این کار کنید.!


public class MyClass {

private int a ;
public final ObserverValueSet observerValueSet = a -> MyClass.this.a = a;
public final ObserverValueGet observerValueGet = () -> MyClass.this.a;
public MyClass() { }

public interface ObserverValueSet {
void setValue(int a);
}

public interface ObserverValueGet {
int get();
}
}

و تو اکتیویتی ویا هر کلاس دیگه ای هم اینطوری فراخوانی کنید...

MyClass x = new MyClass();
x.observerValueSet.setValue(1);
int o = x.observerValueGet.get();

ilalia2
پنج شنبه 06 اردیبهشت 1397, 23:46 عصر
یعنی می خواهید یه متغیر public static رو مقدار بدید.!
دوست عزیز متغیر های استاتیک در heap حافظه ذخیره میشن پس بنابراین فقط یکبار مقدار میگیرن البته اگر از نوع داده اولیه باشن پس دیگه نمی تونید از اکتیویتی های دیگه بهش مقدار بدید.!

[/JAVA]


اها پس متغیر سراسری رو اشتباه گفتم،
ببینید من میخوام مثلا تو اکتیویتی اول عدد رو از کاربر بگیرم و ذخیره ش کنم،
بعد هر وقت کاربر خواست به اکتیویتی دوم یا سوم و .. بره اون عدد مثلا نمایش داده بشه

farhad_shiri_ex
جمعه 07 اردیبهشت 1397, 00:10 صبح
نه همون متغیر سراسری درست گفتید!
منتهی در زبان جاوا چون شی گرایی محض رعایت میشود مثل زبان سی پلاس پلاس نمی تونید یک متغیر Global تعریف کنید ازش استفاده کنید یعنی کلا کار جالبی نیست و قوانین پنهان سازی اطلاعات رو نقض میکنه!
در جواب سوال شما هم کدی که در بالا نوشتم مشکلتون را حل خواهد کرد کافی است که در اکتیویتی که از کاربر عدد را دریافت میکنید کلاسی که در بالا گذاشتم تعریف کنید و بعد هم که نحوه استفاده اش را در اکتیویتی دیگه هم که خیلی سر راست پس به راحتی میتونید هم از اکتیویتی دیگه بهش مقدار بدید و هم مقدار رو بخونید.
فقط فیلدی که به نام a تعریف کردم رو با متغیر خودتون جابجا کنید و البته اینترفیس ها روهم ویرایش کنید که داده شما رو انتقال بدهند.

ilalia2
چهارشنبه 30 خرداد 1397, 10:34 صبح
ببخشید من هنوز سر این موضوع گیرم، اگه میشه کمک کنید کارم راه بیافته، کل اینترنتو گشتم!

farhad_shiri_ex
پنج شنبه 31 خرداد 1397, 02:57 صبح
ببخشید من هنوز سر این موضوع گیرم، اگه میشه کمک کنید کارم راه بیافته، کل اینترنتو گشتم!

اینو خوب اومدی !!! مگه داریم که تو اینترنت نباشه..
به هر حال مشکلت چی کجاست ؟؟؟

ilalia2
جمعه 01 تیر 1397, 09:30 صبح
الان این کدی که شما گفتین رو سر درنیاوردم!
اگه میشه کدش رو بنویسید و من با همون متغیر ها کپی کنم.

ilalia2
جمعه 01 تیر 1397, 09:31 صبح
اینو خوب اومدی !!! مگه داریم که تو اینترنت نباشه..
به هر حال مشکلت چی کجاست ؟؟؟

الان این کدی که شما گفتین رو سر درنیاوردم!
اگه میشه کدش رو بنویسید و من با همون متغیر ها کپی کنم.