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

به دست آوردن Context (برای یک Activity یا برای Application)، در برنامه نویسی اندروید

همان طور که می دانید هر Activity دارای یک Context است، علاوه بر این، کل برنامه اندروید (یعنی Application) نیز دارای یک Context می باشد. حال در این مبحث می خواهیم شرح بدهیم که چگونه می توان Context مربوط به یک Activity یا Context مربوط به کل برنامه اندروید (یعنی Application) را به دست آورد.

بد نیست که قبل از هر چیز، تفاوت بین Context مربوط به Application و Context مربوط به Activity را شرح بدهیم. هر دوی آنها، نمونه ای از Context می باشد، اما تفاوت آنها در این است که Context مربوط به Application ، در کل چرخه اجرای (lifecycle) برنامه اندروید وجود دارد، اما Context مربوط به Activity ، تنها در چرخه اجرای (lifecycle) آن Activity موجود است.

با استفاده از روش زیر، می توانیم Context مربوط به Application را به دست آوریم :


baseContext.getApplicationContext()

در کدهای بالا، به جای عبارت baseContext ، باید Context مربوط به آن Activity که در آن هستیم را بنویسیم (یا Context مربوط به موارد دیگر).

همچنین اگر بخواهیم Context مربوط به یک Activity را به دست آوریم، باید در میان کدهای آن Activity ، کد زیر را بنویسیم :


getApplication()

و یا با روش زیر (در مواردی مثل کدنویسی در Fragment ها و ...) :


getActivity()

همچنین، چنانچه کلاسی (class) که برای آن کد می نویسید، یکی از کلاس های زیر باشد :


ContextWrapper
MockContext
AbstractInputMethodService
AccessibilityService
AccountAuthenticatorActivity
Activity
ActivityGroup
AliasActivity
Application
BackupAgent
BackupAgentHelper
ContextThemeWrapper
ExpandableListActivity
InputMethodService
IntentService
IsolatedContext
LauncherActivity
ListActivity
MockApplication
MutableContextWrapper
NativeActivity
PreferenceActivity
RecognitionService
RemoteViewsService
RenamingDelegatingContext
Service
SpellCheckerService
TabActivity
TextToSpeechService
VpnService
WallpaperService

آنگاه می توانید با استفاده از کلمه زیر، به Context ارجاع بدهید :


this
نکته

دقت شود که اگر یک کلاس (class) جدید تعریف کنیم و در آن به Context نیاز داشته باشیم، آنگاه باید Context را به آن ارسال نماییم (یعنی Context مربوط به Activity). مثلا فرض کنید که بخواهیم یک کلاس (class) با نام MyClass بسازیم که از گسترش Application ساخته شود و هنگام ارجاع به آن در یک Activity ، بخواهیم Context مربوط به Activity را به آن ارسال کنیم، بنابراین باید ساختار آن کلاس (class) را به صورت کدهای زیر بنویسیم :


public class MyClass extends Application {
       
    private Context context;

    public MyClass (Context context) {
        this.context = context;
    }

}

اکنون برای ارسال Context مربوط به Activity ، به کلاس MyClass ، باید در میان کدهای Activity ، کدهای زیر را بنویسیم :


MyClass myClass = new MyClass(this);

همان طور که مشاهده می کنید، از کلاس MyClass ، یک شیء (object) با نام myClass ساخته ایم و هنگام این فرآیند، Context مربوط به Activity را به کلاس ارسال کرده ایم (کلمه this به Context مربوط به Activity اشاره می کند).

نویسنده علیرضا گلمکانی
شماره کلید 341
گزینه ها
به اشتراک گذاری (Share) در شبکه های اجتماعی
نظرات 0 0 0

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