آموزش برنامه نویسی اندروید (Android)
۴۱۹ آموزش
نمایش دسته بندی ها (۴۱۹ آموزش)

دسترسی به یک مقدار، به صورت سراسری (global) در تمامی Activity ها، در برنامه نویسی اندروید

همان طور که می دانید، معمولا متغیرها را در یک Activity که به کار می روند، تعریف کرده و سپس مقادیر مورد نظرمان را در آنها ذخیره می کنیم، اما گاهی نیاز داریم که به یک مقدار، در تمام Activity ها دسترسی داشته باشیم، یعنی نیازی نباشد که آن را در تک تک Activity ها تعریف کنیم، بلکه آن را تنها در یک کلاس (class) تعریف کرده و سپس آن را در Activity های مختلف، از کلاس (class) فراخوانی کنیم. بنابراین اگر بخواهیم آن مقدار خاص را تغییر بدهیم، تنها باید کدهای آن کلاس (class) را تغییر بدهیم.

ابتدا متغیرهایی که می خواهیم به صورت سراسری (global) تعریف شوند را در یک کلاس (class) با نام Globals تعریف می کنیم (مثلا با کد زیر، متغیر با نام myText در آن تعریف می کنیم) :


public class Globals extends Application {

    public String myText = "text";

}

اکنون اگر بخواهیم درون یک Activity (یا یک کلاس) دلخواه، مقدار آن متغیر را فراخوانی کنیم، باید کدهای زیر را بنویسیم :


Globals global = new Globals();
String mt = global.myText;
نویسنده علیرضا گلمکانی
شماره کلید 343
گزینه ها
به اشتراک گذاری (Share) در شبکه های اجتماعی
نظرات 4 4 0
نیما محمدی
۱۳۹۵/۰۳/۳۱
۱۲:۱۷

سلام،من همین کار را کردم کد زیر در اکتیویتی مقصد وارد شده:

اما در زیر new Globals خط قرمز کشیده و ارور آن به صورت زیر است:


No enclosing instance of type ListActivity is accessible. Must qualify the allocation with an enclosing instance of type ListActivity (e.g. x.new A() where x is an instance of ListActivity).

وحید
۱۳۹۵/۰۷/۱۳
۱۳:۰۷

داداش با این چیزی که گفتی که کلا با لگد رفتی تو ساختار شی گرایی و کلاس تو جاوا ....
من تا حالا هیچ جایی ندیدم و عمرا هم کاربرد نداره که یه آبجکتی از یه کلاس درست کنیم که بخواهیم یکی از متغییر هاش را داخل یه رشته دیگه بریزم که بشه متغییر عمومی !!!!! 

admin
۱۳۹۵/۰۷/۱۳
۱۳:۴۶

سلام.
فرض کنید که شما در حال طراحی یک قالب هستید که دارای یک سری پارامتر است که ویژگی های کلی قالب را تعیین می کنند.
قصد داریم که تمامی این مقادیر را تنها در یک بخش از برنامه اندروید داشته باشیم (و بتوانیم از هر کلاس دلخواه، از جمله Activity ، مقادیر دلخواه را از آن فراخوانی کنیم)، که مثلا اگر فرد دیگری، قالب را دانلود کرد و قصد تغییر ویژگی های آن را داشت، به او بگوییم که مثلا فایل Globals.java را باز کن و مقادیر A و  B و  C را مطابق میل خود تغییر بده (نه اینکه مجبور شود تعدادی فایل را باز کرده و متغیرهای مختلف تعریف شده در آنها را یافته و تغییر بدهد).
در واقع این موردی که بنده ذکر کردم، نوعی ایجاد یک نظم کلی برای تعریف پارامترهای مهم برنامه اندروید به صورت ((تنها در یک فایل)) می باشد (که سعی هم می کنیم که فایل مورد نظر، کمترین میزان کد را داشته باشد). 
در واقع ارتباطی با مباحث اصلی شیء گرایی (object oriented) نداشته (نخواسته ایم از گسترش کلاس استفاده کنیم)، اگر بخواهیم از مباحث اصلی شیء گرایی (object oriented) استفاده کنیم (منظورم گسترش کلاس است)، باید بگوییم که یک کلاس بر اساس گسترش کلاس Activity ساخته شود و تمامی متغیرهای مورد نظرمان را در آن تعریف کنیم و سپس هر Activity جدید که خواستیم برای برنامه اندروید بسازیم، آنها بر اساس گسترش (extend) آن کلاس که ساخته ایم، ساخته شوند. البته در این حالت، تنها کلاس های از نوع Activity می توانند از آن استفاده کنند (مگر اینکه در کلاس های از نوع دیگر، دوباره به مقادیر تعریف شده در Activity ارجاع بدهیم که باز هم مشابه همان موردی که بنده ذکر کردم، می شود و نیاز به کدنویسی اضافه دارد).
ما شیوه های مختلف کدنویسی را مثال می زنیم و کاربران بر اساس نوع کاربرد مورد نظرشان، یکی را انتخاب می کنند.

کدنویس
۱۳۹۶/۰۵/۰۴
۱۳:۴۲

اشتباهه

ارسال نظر جدید (بدون نیاز به عضو بودن در وب سایت)