کار با Activity ها ، در برنامه نویسی اندروید

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
فهرست مطالب تاپیک:

  1. رفتن به Activity جدید، با استفاده از روش Intent ، در برنامه نویسی اندروید
  2. رفتن به activity جدید، با استفاده از یک رشته (تعریف نام activity با رشته)، در برنامه نویسی اندروید
  3. ارسال یک مقدار تنها (رشته یا عدد یا ...) از یک Activity به Activity دیگر، در برنامه نویسی اندروید
  4. ارسال یک آرایه (Array) (از نوع رشته یا عدد یا ...) از یک Activity به Activity دیگر، در برنامه نویسی اندروید
  5. تغییر Activity اصلی برنامه اندروید (تغییر اولین Activity که در شروع برنامه اندروید، نمایش داده می شود)
  6. تغییر عنوان (title) مربوط به Activity ها، در برنامه نویسی اندروید
  7. چرخه (lifecycle) یک activity ، در برنامه اندروید
  8. وقتی در برنامه اندروید، از یک Activity ، وارد Activity دیگر می شویم، چه اتفاقی برای Activity قبلی می افتد ؟
  9. بازگشت به یک Activity موجود در پس زمینه (که به حالت Stop یا Pause رفته)(یا به اصطلاح، Resume کردن یک Activity موجود در پس زمینه)، با روش Intent ، در برنامه نویسی اندروید
  10. به دست آوردن Context (برای یک Activity یا برای Application)، در برنامه نویسی اندروید
  11. به دست آوردن Intent مربوط به یک Activity ، با کدنویسی در میان کدهای آن Activity ، با روش getIntent ، در برنامه نویسی اندروید
  12. تغییر رنگ پس زمینه یک Activity ، در برنامه نویسی اندروید
  13. نمایش یک عکس در پس زمینه یک Activity ، در برنامه نویسی اندروید
  14. شفاف کردن پس زمینه (background) یک Activity ، در برنامه نویسی اندروید
  15. جلوگیری از نمایش صفحه سیاه (Black Screen)، هنگام رفتن به Activity جدید (قبل از نمایش Activity جدید)، در برنامه نویسی اندروید
  16. به دست آوردن نام Activity فعلی (که در حال اجرای کدهای آن هستیم)، در برنامه نویسی اندروید
  17. بستن (destroy کردن) و اجرای دوباره یک Activity (در اصطلاح، restart یا refresh کردن Activity)، با اشاره کاربر بر روی یک دکمه (Button)، در برنامه نویسی اندروید
  18. روشی دیگر برای بستن (destroy کردن) و اجرای دوباره یک Activity (در اصطلاح، restart یا refresh کردن Activity)، با استفاده از روش onActivityResult ، در برنامه نویسی اندروید
  19. چگونگی اجرای روش startActivityForResult ، با کدنویسی در کلاسی (class) غیر از کلاس Activity ، در برنامه نویسی اندروید
  20. اجرای یک روش (method) از یک Activity ، از طریق کدنویسی در کلاسی (Class) دیگر، در برنامه نویسی اندروید


منبع: kelidestan.com
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
رفتن به Activity جدید، با استفاده از روش Intent ، در برنامه نویسی اندروید

رفتن به Activity جدید، با استفاده از روش Intent ، در برنامه نویسی اندروید

برای رفتن به یک Activity جدید (شروع یک Activity جدید)، با استفاده از روش Intent ، کدهای زیر را می نویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]startActivity[COLOR=#009900]([/COLOR][B]new[/B] Intent[COLOR=#009900]([/COLOR]Activity1.[B]this[/B], Activity2.[B]class[/B][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
که در آن، Activity1 ، نام activity فعلی و Activity2 ، نام activity است که قصد داریم وارد آن بشویم.

دقت کنید که برای خلاصه نویسی، کدها را به صورت بالا (در یک خط) نوشته ایم، در صورتی که بخواهیم مرحله ساخت Intent در خطی جداگانه نوشته شود، کدها به صورت زیر خواهند بود :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]Intent intent [COLOR=#339933]=[/COLOR] [B]new[/B] Intent[COLOR=#009900]([/COLOR]Activity1.[B]this[/B], Activity2.[B]class[/B][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
startActivity[COLOR=#009900]([/COLOR]intent[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[COLOR=#339933]
[/COLOR]
[/FONT][/COLOR]
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
رفتن به activity جدید، با استفاده از یک رشته (تعریف نام activity با رشته)، در برنامه نویسی اندروید

رفتن به activity جدید، با استفاده از یک رشته (تعریف نام activity با رشته)، در برنامه نویسی اندروید

روش عادی برای رفتن از یک activity به activity دیگر به صورت زیر می باشد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]startActivity[COLOR=#009900]([/COLOR][B]new[/B] Intent[COLOR=#009900]([/COLOR]CurrentActivity.[B]this[/B], NextActivity.[B]class[/B][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
که در آن، CurrentActivity برابر نام activity فعلی (همان activity که در آن هستیم) و NextActivity ، برابر آن activity است که قصد داریم وارد آن شویم.

اما ممکن است که بخواهیم نام activity که قرار است به آن برویم را با یک رشته (string) تعریف کرده و سپس بر اساس آن رشته، وارد activity بشویم، زیرا اینگونه کد نوشتن، آزادی عمل بیشتری به ما می دهد و برای نوشتن برخی برنامه ها، لازم می شود (البته تا مجبور نشده اید، از آن استفاده نکنید، تا حجم کدهایتان زیاد نشود). برای این منظور، کدهای زیر را می نویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#003399]String[/COLOR] StringClass [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]"com.iran-eng.example.NextActivity"[/COLOR][COLOR=#339933];[/COLOR]
Class[COLOR=#339933]<?>[/COLOR] c [COLOR=#339933]=[/COLOR] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#339933];[/COLOR]
[B]if[/B][COLOR=#009900]([/COLOR]StringClass [COLOR=#339933]!=[/COLOR] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
    [B]try[/B] [COLOR=#009900]{[/COLOR]
        c [COLOR=#339933]=[/COLOR] [B]Class[/B].[COLOR=#006633]forName[/COLOR][COLOR=#009900]([/COLOR]StringClass[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
    [COLOR=#009900]}[/COLOR] [B]catch[/B] [COLOR=#009900]([/COLOR][COLOR=#003399]ClassNotFoundException[/COLOR] e[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
        e.[COLOR=#006633]printStackTrace[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
    [COLOR=#009900]}[/COLOR]
[COLOR=#009900]}[/COLOR]
Intent intent [COLOR=#339933]=[/COLOR] [B]new[/B] Intent[COLOR=#009900]([/COLOR]CurrentActivity.[B]this[/B], c[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
startActivity[COLOR=#009900]([/COLOR]intent[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
که در آن، CurrentActivity برابر نام activity فعلی (همان activity که در آن هستیم) و NextActivity ، برابر آن activity است که قصد داریم وارد آن شویم.

در کدهای بالا، به عبارت نوشته شده برای رشته StringClass توجه کنید (در این رشته، نام activity را مشخص کرده ایم) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]com.[COLOR=#006633]iran-eng[/COLOR].[COLOR=#006633]example[/COLOR].[COLOR=#006633]NextActivity[/COLOR][/FONT]
[/FONT][/COLOR]
مشاهده می کنید که نام package برنامه اندروید را قبل از نام activity مورد نظرمان که می خواهیم به آن وارد شویم (یعنی NextActivity)، نوشته ایم. در کد بالا، ما نام package را برابر com.iran-eng.example گرفته ایم و شما باید آن را به نام package مورد نظر خود، تغییر بدهید.
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
ارسال یک مقدار تنها (رشته یا عدد یا ...) از یک Activity به Activity دیگر، در برنامه نویسی اندروید

ارسال یک مقدار تنها (رشته یا عدد یا ...) از یک Activity به Activity دیگر، در برنامه نویسی اندروید

زمانی که کاربر، از یک Activity به یک Activity دیگر وارد می شود، ممکن است که بخواهیم یک سری اطلاعات را از Activity قبلی، به Activity جدید وارد کنیم (مثلا مقادیر انتخاب شده توسط کاربر). در این مبحث، نحوه ارسال یک مقدار از یک Activity به Activity دیگر را شرح می دهیم.برای ارسال مقدار از Activity فعلی، روش putExtra به کار می رود. بهتر است ابتدا شکل کلی آن را بیان کنیم و بعد به صورت جداگانه، شیوه استفاده از آن برای انواع متغیرها (رشته، عدد و ...) را شرح بدهیم. شیوه کلی استفاده از روش putExtra ، به صورت زیر می باشد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]intent.[COLOR=#006633]putExtra[/COLOR][COLOR=#009900]([/COLOR]key, value[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
که در آن، intent ، یک شیء (object) از نوع Intent می باشد (یک شیء که از کلاس Intent ساخته شده)(که از آن برای رفتن به Activity بعدی استفاده می کنیم). key باید به صورت یک رشته باشد که نامی منحصربفرد (انتخاب به دلخواه) برای دریافت مقدار در Activity بعدی می باشد (زیرا ممکن است چندین مقدار را ارسال کنیم و بنابراین باید هر کدام، یک نام منحصربفرد (key) داشته باشند تا بتوانیم آنها را به صورت جداگانه دریافت کنیم). value نیز همان مقداری است که می خواهیم به Activity بعدی ارسال شود.

ارسال یک مقدار از نوع رشته (String) :

درون Activity اول، کدهای زیر را می نویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]Intent intent [COLOR=#339933]=[/COLOR] [B]new[/B] Intent[COLOR=#009900]([/COLOR]getApplicationContext[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR], NewActivity.[B]class[/B][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#003399]String[/COLOR] myVariable_1 [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]"value"[/COLOR][COLOR=#339933];[/COLOR]
intent.[COLOR=#006633]putExtra[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"key_name"[/COLOR], myVariable_1[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
startActivity[COLOR=#009900]([/COLOR]intent[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
دقت کنید که NewActivity ، نام Activity جدیدی است که وارد آن خواهیم شد و اطلاعات به آن ارسال می گردد.

سپس درون Activity دوم، باید کدهای زیر را بنویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]Bundle extras [COLOR=#339933]=[/COLOR] getIntent[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getExtras[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[B]if[/B] [COLOR=#009900]([/COLOR]extras [COLOR=#339933]!=[/COLOR] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
    [COLOR=#003399]String[/COLOR] myVariable_2 [COLOR=#339933]=[/COLOR] extras.[COLOR=#006633]getString[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"key_name"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
البته شرط if را می توان برداشت. در رشته (String) با نام myVariable_2 ، مقدار مورد نظرمان ذخیره شده است.

نکته :

اگر مقدار مورد نظر، یک عدد بوده است (یعنی یک عدد را در رشته ذکر کرده ایم، نه اینکه از جنس int باشد، برای int ، در ادامه توضیحاتی داده شده است)، می توانید از کد زیر، برای تبدیل رشته (string) به عدد، استفاده کنید :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#000066][B]int[/B][/COLOR] myVariable_2_new [COLOR=#339933]=[/COLOR] [COLOR=#003399]Integer[/COLOR].[COLOR=#006633]parseInt[/COLOR][COLOR=#009900]([/COLOR]myVariable_2[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
نکته :

قبل از دریافت مقدار، می توانیم چک کنیم که آیا اصلا مقداری با آن نام ارسال شده است یا خیر (با دستور if) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]Bundle extras [COLOR=#339933]=[/COLOR] getIntent[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getExtras[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[B]if[/B] [COLOR=#009900]([/COLOR]extras [COLOR=#339933]!=[/COLOR] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
    [B]if[/B][COLOR=#009900]([/COLOR]extras.[COLOR=#006633]containsKey[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"key_name"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR]
        [COLOR=#003399]String[/COLOR] myVariable_2 [COLOR=#339933]=[/COLOR] extras.[COLOR=#006633]getString[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"key_name"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
    [COLOR=#009900]}[/COLOR]
[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
ارسال یک مقدار از نوع عدد (int) :

درون Activity اول، کدهای زیر را می نویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]Intent intent [COLOR=#339933]=[/COLOR] [B]new[/B] Intent[COLOR=#009900]([/COLOR]getApplicationContext[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR], NewActivity.[B]class[/B][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#000066][B]int[/B][/COLOR] myVariable_1 [COLOR=#339933]=[/COLOR] [COLOR=#CC66CC]1[/COLOR][COLOR=#339933];[/COLOR]
intent.[COLOR=#006633]putExtra[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"key_name"[/COLOR], myVariable_1[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
startActivity[COLOR=#009900]([/COLOR]intent[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
دقت کنید که NewActivity ، نام Activity جدیدی است که وارد آن خواهیم شد و اطلاعات به آن ارسال می گردد.

سپس درون Activity دوم، باید کدهای زیر را بنویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]Bundle extras [COLOR=#339933]=[/COLOR] getIntent[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getExtras[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[B]if[/B] [COLOR=#009900]([/COLOR]extras [COLOR=#339933]!=[/COLOR] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
    [COLOR=#000066][B]int[/B][/COLOR] myVariable_2 [COLOR=#339933]=[/COLOR] extras.[COLOR=#006633]getInt[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"key_name"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
البته شرط if را می توان برداشت. در متغیر با نام myVariable_2 (که از نوع int می باشد)، مقدار مورد نظرمان ذخیره شده است.

ارسال یک مقدار از نوعی غیر از رشته (String) یا عدد (int) :

همان طور که مشاهده کردید، در Activity دوم، برای دریافت رشته (String)، از روش getString و برای دریافت عدد (int)، از روش getInt استفاده شد. بنابراین برای هر نوع متغیر، باید تنها روش (method) مربوط به آن را بدانیم. برای پیدا کردن این روش، در برنامه eclipse ، نشانگر موس را بعد از عبارت extras.get برده (کلیک می کنیم تا نشانگر در آنجا قرار بگیرد) و کلیدهای Ctrl و Space را به صورت همزمان از کیبورد فشار می دهیم تا تمامی روش های قابل انتخاب، نمایش داده شوند :

1458.jpg
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
ارسال یک آرایه (Array) (از نوع رشته یا عدد یا ...) از یک Activity به Activity دیگر، در برنامه نویسی اندروید

ارسال یک آرایه (Array) (از نوع رشته یا عدد یا ...) از یک Activity به Activity دیگر، در برنامه نویسی اندروید

در مطالب قبل ، چگونگی ارسال یک مقدار تنها (رشته یا عدد یا ...) از یک Activity به Activity دیگر را شرح دادیم. اکنون قصد داریم که چگونگی ارسال یک آرایه (Array) (از نوع رشته یا عدد یا ...) از یک Activity به Activity دیگر را شرح بدهیم.

برای ارسال مقدار از Activity فعلی، روش putExtra به کار می رود. بهتر است ابتدا شکل کلی آن را بیان کنیم و بعد به صورت جداگانه، شیوه استفاده از آن برای انواع متغیرها (رشته، عدد و ...) را شرح بدهیم. شیوه کلی استفاده از روش putExtra ، به صورت زیر می باشد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]intent.[COLOR=#006633]putExtra[/COLOR][COLOR=#009900]([/COLOR]key, value[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
که در آن، intent ، یک شیء (object) از نوع Intent می باشد (یک شیء که از کلاس Intent ساخته شده)(که از آن برای رفتن به Activity بعدی استفاده می کنیم). key باید به صورت یک رشته باشد که نامی منحصربفرد و انتخابی برای دریافت مقدار در Activity بعدی می باشد (زیرا ممکن است چندین مقدار را ارسال کنیم و بنابراین باید هر کدام، یک نام منحصربفرد (key) داشته باشند تا بتوانیم آنها را به صورت جداگانه دریافت کنیم). value نیز همان مقداری است که می خواهیم به Activity بعدی ارسال شود.

ارسال یک آرایه (Array) از نوع رشته (String) :
درون Activity اول، کدهای زیر را می نویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#003399]String[/COLOR] myArray_1[COLOR=#009900][[/COLOR][COLOR=#009900]][/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#009900]{[/COLOR][COLOR=#0000FF]"ali"[/COLOR],[COLOR=#0000FF]"hamed"[/COLOR],[COLOR=#0000FF]"reza"[/COLOR][COLOR=#009900]}[/COLOR][COLOR=#339933];[/COLOR]
Intent intent [COLOR=#339933]=[/COLOR] [B]new[/B] Intent[COLOR=#009900]([/COLOR]getApplicationContext[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR], NewActivity.[B]class[/B][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
intent.[COLOR=#006633]putExtra[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"key_name"[/COLOR], myArray_1[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
startActivity[COLOR=#009900]([/COLOR]intent[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]

دقت کنید که NewActivity ، نام Activity جدیدی است که وارد آن خواهیم شد و اطلاعات به آن ارسال می گردد.

سپس درون Activity دوم، باید کدهای زیر را بنویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]Bundle extras [COLOR=#339933]=[/COLOR] getIntent[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getExtras[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[B]if[/B] [COLOR=#009900]([/COLOR]extras [COLOR=#339933]!=[/COLOR] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
    [COLOR=#003399]String[/COLOR][COLOR=#009900][[/COLOR][COLOR=#009900]][/COLOR] myArray_2 [COLOR=#339933]=[/COLOR] extras.[COLOR=#006633]getStringArray[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"key_name"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
البته شرط if را می توان برداشت. در رشته (String) با نام myVariable_2 ، مقدار مورد نظرمان ذخیره شده است.

نکته :

قبل از دریافت مقدار، می توانیم چک کنیم که آیا اصلا مقداری با آن نام ارسال شده است یا خیر (با دستور if) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]Bundle extras [COLOR=#339933]=[/COLOR] getIntent[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getExtras[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[B]if[/B] [COLOR=#009900]([/COLOR]extras [COLOR=#339933]!=[/COLOR] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
    [B]if[/B][COLOR=#009900]([/COLOR]extras.[COLOR=#006633]containsKey[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"key_name"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR]
        [COLOR=#003399]String[/COLOR][COLOR=#009900][[/COLOR][COLOR=#009900]][/COLOR] myArray_2 [COLOR=#339933]=[/COLOR] extras.[COLOR=#006633]getStringArray[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"key_name"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
    [COLOR=#009900]}[/COLOR]
[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
ارسال یک آرایه (Array) از نوع عدد (int) :
درون Activity اول، کدهای زیر را می نویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#000066][B]int[/B][/COLOR] myArray_1[COLOR=#009900][[/COLOR][COLOR=#009900]][/COLOR] [COLOR=#339933]=[/COLOR] [COLOR=#009900]{[/COLOR][COLOR=#CC66CC]1[/COLOR],[COLOR=#CC66CC]2[/COLOR],[COLOR=#CC66CC]3[/COLOR][COLOR=#009900]}[/COLOR][COLOR=#339933];[/COLOR]
Intent intent [COLOR=#339933]=[/COLOR] [B]new[/B] Intent[COLOR=#009900]([/COLOR]getApplicationContext[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR], NewActivity.[B]class[/B][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
intent.[COLOR=#006633]putExtra[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"key_name"[/COLOR], myArray_1[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
startActivity[COLOR=#009900]([/COLOR]intent[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
دقت کنید که NewActivity ، نام Activity جدیدی است که وارد آن خواهیم شد و اطلاعات به آن ارسال می گردد.

سپس درون Activity دوم، باید کدهای زیر را بنویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]Bundle extras [COLOR=#339933]=[/COLOR] getIntent[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getExtras[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[B]if[/B] [COLOR=#009900]([/COLOR]extras [COLOR=#339933]!=[/COLOR] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
    [COLOR=#000066][B]int[/B][/COLOR][COLOR=#009900][[/COLOR][COLOR=#009900]][/COLOR] myArray_2 [COLOR=#339933]=[/COLOR] extras.[COLOR=#006633]getIntArray[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"key_name"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
البته شرط if را می توان برداشت. در متغیر با نام myVariable_2 (که از نوع int می باشد)، مقدار مورد نظرمان ذخیره شده است.

ارسال یک آرایه (Array) از نوعی غیر از رشته (String) یا عدد (int) :
همان طور که مشاهده کردید، در Activity دوم، برای دریافت رشته (String)، از روش getStringArray و برای دریافت عدد (int)، از روش getIntArray استفاده شد. بنابراین برای هر نوع متغیر، باید تنها روش (method) مربوط به آن را بدانیم. برای پیدا کردن این روش، در برنامه eclipse ، نشانگر موس را بعد از عبارت extras.get برده (کلیک می کنیم تا نشانگر در آنجا قرار بگیرد) و کلیدهای Ctrl و Space را به صورت همزمان از کیبورد فشار می دهیم تا تمامی روش های قابل انتخاب، نمایش داده شوند :

1459.jpg
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
تغییر Activity اصلی برنامه اندروید (تغییر اولین Activity که در شروع برنامه اندروید، نمایش داده می شود)

تغییر Activity اصلی برنامه اندروید (تغییر اولین Activity که در شروع برنامه اندروید، نمایش داده می شود)

در این مبحث، چگونگی تغییر دادن Activity اصلی برنامه اندروید را شرح می دهیم. منظور از Activity اصلی، همان Activity است که با اجرای برنامه اندروید، به عنوان اولین Activity به کاربر نمایش داده می شود.
فرض کنید که پروژه اندرویدی ساخته ایم که دارای دو Activity با نام های MainActivity و SecondActivity می باشد :

753.jpg

اکنون فایل AndroidManifest.xml از پروژه اندروید را باز می کنیم :


754.jpg



کدهای فایل AndroidManifest.xml به صورت زیر می باشند :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<?[/COLOR]xml version[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"1.0"[/COLOR] encoding[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"utf-8"[/COLOR][COLOR=#339933]?>[/COLOR]
[COLOR=#339933]<[/COLOR]manifest xmlns[COLOR=#339933]:[/COLOR]android[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/apk/res/android"[/COLOR]
    [B]package[/B][COLOR=#339933]=[/COLOR][COLOR=#0000FF]"com.kelidestan.com"[/COLOR]
    android[COLOR=#339933]:[/COLOR]versionCode[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"1"[/COLOR]
    android[COLOR=#339933]:[/COLOR]versionName[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"1.0"[/COLOR] [COLOR=#339933]>[/COLOR]

    [COLOR=#339933]<[/COLOR]uses[COLOR=#339933]-[/COLOR]sdk
        android[COLOR=#339933]:[/COLOR]minSdkVersion[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"8"[/COLOR]
        android[COLOR=#339933]:[/COLOR]targetSdkVersion[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"18"[/COLOR] [COLOR=#339933]/>[/COLOR]

    [COLOR=#339933]<[/COLOR]application
        android[COLOR=#339933]:[/COLOR]allowBackup[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"true"[/COLOR]
        android[COLOR=#339933]:[/COLOR]icon[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@drawable/ic_launcher"[/COLOR]
        android[COLOR=#339933]:[/COLOR]label[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@string/app_name"[/COLOR]
        android[COLOR=#339933]:[/COLOR]theme[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@style/AppTheme"[/COLOR] [COLOR=#339933]>[/COLOR]
        [COLOR=#339933]<[/COLOR]activity
            android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"com.kelidestan.com.MainActivity"[/COLOR]
            android[COLOR=#339933]:[/COLOR]label[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@string/app_name"[/COLOR] [COLOR=#339933]>[/COLOR]
            [COLOR=#339933]<[/COLOR]intent[COLOR=#339933]-[/COLOR]filter[COLOR=#339933]>[/COLOR]
                [COLOR=#339933]<[/COLOR]action android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"android.intent.action.MAIN"[/COLOR] [COLOR=#339933]/>[/COLOR]

                [COLOR=#339933]<[/COLOR]category android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"android.intent.category.LAUNCHER"[/COLOR] [COLOR=#339933]/>[/COLOR]
            [COLOR=#339933]</[/COLOR]intent[COLOR=#339933]-[/COLOR]filter[COLOR=#339933]>[/COLOR]
        [COLOR=#339933]</[/COLOR]activity[COLOR=#339933]>[/COLOR]
        [COLOR=#339933]<[/COLOR]activity
            android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"com.kelidestan.com.SecondActivity"[/COLOR]
            android[COLOR=#339933]:[/COLOR]label[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@string/title_activity_second"[/COLOR] [COLOR=#339933]>[/COLOR]
        [COLOR=#339933]</[/COLOR]activity[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]</[/COLOR]application[COLOR=#339933]>[/COLOR]

[COLOR=#339933]</[/COLOR]manifest[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
تگ (tag) با نام activity برای تعریف یک Activity به کار می رود و چون در پروژه اندروید، دو Activity داریم، بنابراین تگ activity نیز دو بار به کار رفته است :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]        [COLOR=#339933]<[/COLOR]activity
            android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"com.kelidestan.com.MainActivity"[/COLOR]
            android[COLOR=#339933]:[/COLOR]label[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@string/app_name"[/COLOR] [COLOR=#339933]>[/COLOR]
            [COLOR=#339933]<[/COLOR]intent[COLOR=#339933]-[/COLOR]filter[COLOR=#339933]>[/COLOR]
                [COLOR=#339933]<[/COLOR]action android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"android.intent.action.MAIN"[/COLOR] [COLOR=#339933]/>[/COLOR]

                [COLOR=#339933]<[/COLOR]category android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"android.intent.category.LAUNCHER"[/COLOR] [COLOR=#339933]/>[/COLOR]
            [COLOR=#339933]</[/COLOR]intent[COLOR=#339933]-[/COLOR]filter[COLOR=#339933]>[/COLOR]
        [COLOR=#339933]</[/COLOR]activity[COLOR=#339933]>[/COLOR]
        [COLOR=#339933]<[/COLOR]activity
            android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"com.kelidestan.com.SecondActivity"[/COLOR]
            android[COLOR=#339933]:[/COLOR]label[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@string/title_activity_second"[/COLOR] [COLOR=#339933]>[/COLOR]
        [COLOR=#339933]</[/COLOR]activity[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
چون در Activity با نام MainActivity ، کدهای زیر به کار رفته است، بنابراین MainActivity همان Activity اصلی برنامه اندروید می باشد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<[/COLOR]intent[COLOR=#339933]-[/COLOR]filter[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]action android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"android.intent.action.MAIN"[/COLOR] [COLOR=#339933]/>[/COLOR]

    [COLOR=#339933]<[/COLOR]category android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"android.intent.category.LAUNCHER"[/COLOR] [COLOR=#339933]/>[/COLOR]
[COLOR=#339933]</[/COLOR]intent[COLOR=#339933]-[/COLOR]filter[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
این کدها باعث می شوند که هنگام اجرای برنامه اندروید، MainActivity به عنوان Activity اصلی برنامه اندروید شناسایی شود. بنابراین چنانچه قصد داریم که Activity با نام SecondActivity به عنوان Activity اصلی برنامه اندروید در نظر گرفته شود، باید این کدها را از تگ activity مربوط به MainActivity برداشته و در تگ activity مربوط به SecondActivity قرار بدهیم یا روش راحتتر این است که نام های MainActivity و SecondActivity را با هم تعویض کنیم (اینگونه حجم تغییرات لازم، کمتر است و همچنین چون label برای MainActivity برابر @string/app_nameتعیین شده است، دیگر نیازی به تغییر آن نیست، زیرا @string/app_name اشاره به نام برنامه اندروید دارد که در فایل strings.xml از پروژه اندروید تعریف شده و این نام را معمولا برای Activity اصلی برنامه اندروید به کار می برند).

بنابراین مثلا نام های MainActivity و SecondActivity را با هم تعویض می کنیم تا SecondActivity به Activity اصلی برنامه اندروید تبدیل شود (در صورت تمایل، شما می توانید یکی از مشخصه های label را هم تغییر بدهید) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]        [COLOR=#339933]<[/COLOR]activity
            android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"com.kelidestan.com.SecondActivity"[/COLOR]
            android[COLOR=#339933]:[/COLOR]label[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@string/app_name"[/COLOR] [COLOR=#339933]>[/COLOR]
            [COLOR=#339933]<[/COLOR]intent[COLOR=#339933]-[/COLOR]filter[COLOR=#339933]>[/COLOR]
                [COLOR=#339933]<[/COLOR]action android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"android.intent.action.MAIN"[/COLOR] [COLOR=#339933]/>[/COLOR]

                [COLOR=#339933]<[/COLOR]category android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"android.intent.category.LAUNCHER"[/COLOR] [COLOR=#339933]/>[/COLOR]
            [COLOR=#339933]</[/COLOR]intent[COLOR=#339933]-[/COLOR]filter[COLOR=#339933]>[/COLOR]
        [COLOR=#339933]</[/COLOR]activity[COLOR=#339933]>[/COLOR]
        [COLOR=#339933]<[/COLOR]activity
            android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"com.kelidestan.com.MainActivity"[/COLOR]
            android[COLOR=#339933]:[/COLOR]label[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@string/title_activity_second"[/COLOR] [COLOR=#339933]>[/COLOR]
        [COLOR=#339933]</[/COLOR]activity[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
بنابراین کل کدهای فایل AndroidManifest.xml به صورت زیر خواهد بود :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<?[/COLOR]xml version[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"1.0"[/COLOR] encoding[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"utf-8"[/COLOR][COLOR=#339933]?>[/COLOR]
[COLOR=#339933]<[/COLOR]manifest xmlns[COLOR=#339933]:[/COLOR]android[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/apk/res/android"[/COLOR]
    [B]package[/B][COLOR=#339933]=[/COLOR][COLOR=#0000FF]"com.kelidestan.com"[/COLOR]
    android[COLOR=#339933]:[/COLOR]versionCode[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"1"[/COLOR]
    android[COLOR=#339933]:[/COLOR]versionName[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"1.0"[/COLOR] [COLOR=#339933]>[/COLOR]

    [COLOR=#339933]<[/COLOR]uses[COLOR=#339933]-[/COLOR]sdk
        android[COLOR=#339933]:[/COLOR]minSdkVersion[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"8"[/COLOR]
        android[COLOR=#339933]:[/COLOR]targetSdkVersion[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"18"[/COLOR] [COLOR=#339933]/>[/COLOR]

    [COLOR=#339933]<[/COLOR]application
        android[COLOR=#339933]:[/COLOR]allowBackup[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"true"[/COLOR]
        android[COLOR=#339933]:[/COLOR]icon[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@drawable/ic_launcher"[/COLOR]
        android[COLOR=#339933]:[/COLOR]label[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@string/app_name"[/COLOR]
        android[COLOR=#339933]:[/COLOR]theme[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@style/AppTheme"[/COLOR] [COLOR=#339933]>[/COLOR]
        [COLOR=#339933]<[/COLOR]activity
            android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"com.kelidestan.com.SecondActivity"[/COLOR]
            android[COLOR=#339933]:[/COLOR]label[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@string/app_name"[/COLOR] [COLOR=#339933]>[/COLOR]
            [COLOR=#339933]<[/COLOR]intent[COLOR=#339933]-[/COLOR]filter[COLOR=#339933]>[/COLOR]
                [COLOR=#339933]<[/COLOR]action android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"android.intent.action.MAIN"[/COLOR] [COLOR=#339933]/>[/COLOR]

                [COLOR=#339933]<[/COLOR]category android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"android.intent.category.LAUNCHER"[/COLOR] [COLOR=#339933]/>[/COLOR]
            [COLOR=#339933]</[/COLOR]intent[COLOR=#339933]-[/COLOR]filter[COLOR=#339933]>[/COLOR]
        [COLOR=#339933]</[/COLOR]activity[COLOR=#339933]>[/COLOR]
        [COLOR=#339933]<[/COLOR]activity
            android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"com.kelidestan.com.MainActivity"[/COLOR]
            android[COLOR=#339933]:[/COLOR]label[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@string/title_activity_second"[/COLOR] [COLOR=#339933]>[/COLOR]
        [COLOR=#339933]</[/COLOR]activity[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]</[/COLOR]application[COLOR=#339933]>[/COLOR]

[COLOR=#339933]</[/COLOR]manifest[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
پس از اعمال این تغییرات، با اجرای برنامه اندروید، SecondActivity به عنوان Activity اصلی برنامه اندروید، در شروع برنامه نمایش داده می شود.
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
تغییر عنوان (title) مربوط به Activity ها، در برنامه نویسی اندروید

تغییر عنوان (title) مربوط به Activity ها، در برنامه نویسی اندروید

همان طور که می دانید، در برنامه اندروید، هر Activity دارای یک عنوان (title) است. مثلا اگر قالب (theme) برنامه اندروید را به گونه ای انتخاب کرده باشیم که action bar نمایش داده شود، آنگاه درون action bar ، عنوان (title) مربوط به Activity را می توانیم ببینیم :


android-281.jpg

اکنون می خواهیم شرح بدهیم که چگونه می توان عنوان (title) مربوط به یک Activity را تغییر داد. برای این منظور، ابتدا باید فایل AndroidManifest.xml را باز کنیم. مثلا برای یک پروژه اندروید دلخواه که دارای دو Activity می باشد، کدهای فایل AndroidManifest.xml را به صورت زیر فرض می کنیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<?[/COLOR]xml version[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"1.0"[/COLOR] encoding[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"utf-8"[/COLOR][COLOR=#339933]?>[/COLOR]
[COLOR=#339933]<[/COLOR]manifest xmlns[COLOR=#339933]:[/COLOR]android[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/apk/res/android"[/COLOR]
    [B]package[/B][COLOR=#339933]=[/COLOR][COLOR=#0000FF]"com.kelidestan.com"[/COLOR]
    android[COLOR=#339933]:[/COLOR]versionCode[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"1"[/COLOR]
    android[COLOR=#339933]:[/COLOR]versionName[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"1.0"[/COLOR] [COLOR=#339933]>[/COLOR]

    [COLOR=#339933]<[/COLOR]uses[COLOR=#339933]-[/COLOR]sdk
        android[COLOR=#339933]:[/COLOR]minSdkVersion[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"8"[/COLOR]
        android[COLOR=#339933]:[/COLOR]targetSdkVersion[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"18"[/COLOR] [COLOR=#339933]/>[/COLOR]

    [COLOR=#339933]<[/COLOR]application
        android[COLOR=#339933]:[/COLOR]allowBackup[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"true"[/COLOR]
        android[COLOR=#339933]:[/COLOR]icon[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@drawable/ic_launcher"[/COLOR]
        android[COLOR=#339933]:[/COLOR]label[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@string/app_name"[/COLOR]
        android[COLOR=#339933]:[/COLOR]theme[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@style/AppTheme"[/COLOR] [COLOR=#339933]>[/COLOR]
        [COLOR=#339933]<[/COLOR]activity
            android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"com.kelidestan.com.MainActivity"[/COLOR]
            android[COLOR=#339933]:[/COLOR]label[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@string/app_name"[/COLOR] [COLOR=#339933]>[/COLOR]
            [COLOR=#339933]<[/COLOR]intent[COLOR=#339933]-[/COLOR]filter[COLOR=#339933]>[/COLOR]
                [COLOR=#339933]<[/COLOR]action android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"android.intent.action.MAIN"[/COLOR] [COLOR=#339933]/>[/COLOR]

                [COLOR=#339933]<[/COLOR]category android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"android.intent.category.LAUNCHER"[/COLOR] [COLOR=#339933]/>[/COLOR]
            [COLOR=#339933]</[/COLOR]intent[COLOR=#339933]-[/COLOR]filter[COLOR=#339933]>[/COLOR]
        [COLOR=#339933]</[/COLOR]activity[COLOR=#339933]>[/COLOR]
        [COLOR=#339933]<[/COLOR]activity
            android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"com.kelidestan.com.Activity2"[/COLOR]
            android[COLOR=#339933]:[/COLOR]label[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@string/title_activity_activity2"[/COLOR] [COLOR=#339933]>[/COLOR]
        [COLOR=#339933]</[/COLOR]activity[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]</[/COLOR]application[COLOR=#339933]>[/COLOR]

[COLOR=#339933]</[/COLOR]manifest[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
همان طور که مشاهده می کنید، دو Activity ، با استفاده از دو تگ activity تعریف شده اند. مثلا کدهای مربوط به یکی از آنها، به صورت زیر می باشد ، :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<[/COLOR]activity
    android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"com.kelidestan.com.Activity2"[/COLOR]
    android[COLOR=#339933]:[/COLOR]label[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@string/title_activity_activity2"[/COLOR] [COLOR=#339933]>[/COLOR]
[COLOR=#339933]</[/COLOR]activity[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
در کد مربوط به تعریف این Activity ، یک مشخصه با نام label داریم که برای تعیین عنوان (title) مربوط به Activity می باشد. برای این مشخصه، عبارت زیر نوشته شده است :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]@string[COLOR=#339933]/[/COLOR]title_activity_activity2[/FONT]
[/FONT][/COLOR]
این عبارت، اشاره به یک رشته (String) تعریف شده در فایل strings.xml دارد. فایل strings.xml در پروژه اندروید، برای تعریف رشته ها (String) به کار می رود، بنابراین ما متن های مورد نظرمان را در آن به صورت رشته تعریف می کنیم و سپس بدین شکل، به آنها ارجاع می دهیم. بنابراین عنوان Activity مورد نظر، در یک رشته (String) با نام title_activity_activity2 در فایل strings.xml تعریف شده است، پس برای تغییر عنوان این Activity ، باید فایل strings.xml را باز کرده و رشته (String) مورد نظر را تغییر بدهیم.
موقعیت فایل strings.xml در پروژه اندروید، به صورت زیر می باشد :

android-282.jpg
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
چرخه (lifecycle) یک activity ، در برنامه اندروید

چرخه (lifecycle) یک activity ، در برنامه اندروید

برای داشتن درک درستی از چرخه (lifecycle) یک activity ، شکل زیر را مشاهده نمایید :

android-186.jpg
بنابراین، در چرخه یک activity ، روش های onCreate() و onStart() و onRestart() و onResume() و onPause() وonStop() و onDestroy() ، هر یک نقش خاص خود را دارند.به کدهای زیر توجه کنید :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]public[/B] [B]class[/B] Activity [B]extends[/B] ApplicationContext [COLOR=#009900]{[/COLOR]   
        
    [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onCreate[COLOR=#009900]([/COLOR]Bundle savedInstanceState[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]  
        
    [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onStart[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]   
        
    [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onRestart[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]  
        
    [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onResume[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]  
        
    [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onPause[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]  
        
    [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onStop[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR] 
    
    [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onDestroy[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]  
    
[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
با افزودن کدهای دلخواه، به بخش های مختلف چرخه activity ها، می توانیم ویژگی های برنامه اندروید خود را به خوبی تعریف کنیم.
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
وقتی در برنامه اندروید، از یک Activity ، وارد Activity دیگر می شویم، چه اتفاقی برای Activity قبلی می افتد

وقتی در برنامه اندروید، از یک Activity ، وارد Activity دیگر می شویم، چه اتفاقی برای Activity قبلی می افتد

یکی از اصول اولیه برنامه های اندروید این است که ما از یک Activity به Activity دیگر وارد می شویم و هر بار با یک Activity سر و کار داریم. مثلا در یک Activity ، یک عنصر دکمه (Button) قرار می دهیم که با اشاره کاربر بر روی آن، به یک Activity دیگر وارد شویم. اما در این حالت، چه اتفاقی برای Activity قبلی که دیگر آن را نمی بینیم می افتد ؟ این را می دانیم که در اکثر مواقع (در ادامه متوجه می شوید که چرا نمی گوییم همیشه)، با اشاره بر روی دکمه Back گوشی، به آن Activity قبلی برمی گردیم، اما در ادامه دلیل آن و چگونگی انجام آن را شرح خواهیم داد.
ابتدا بگذارید نگاهی به چرخه یک Activity بیندازیم :



http://www.www.www.iran-eng.ir/attachment.php?attachmentid=246363&d=1436387905





ما معمولا کدهای یک Activity را مشابه کدهای زیر می نویسیم (ساده ترین کد برای ساخت یک Activity) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]package[/B] [COLOR=#006699]com.kelidestan.com[/COLOR][COLOR=#339933];[/COLOR]

[B]import[/B] [COLOR=#006699]android.os.Bundle[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.app.Activity[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.Menu[/COLOR][COLOR=#339933];[/COLOR]

[B]public[/B] [B]class[/B] NewActivity [B]extends[/B] Activity [COLOR=#009900]{[/COLOR]

        @Override
        [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onCreate[COLOR=#009900]([/COLOR]Bundle savedInstanceState[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]super[/B].[COLOR=#006633]onCreate[/COLOR][COLOR=#009900]([/COLOR]savedInstanceState[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                setContentView[COLOR=#009900]([/COLOR]R.[COLOR=#006633]layout[/COLOR].[COLOR=#006633]new_activity[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                
                [COLOR=#666666][I]// your codes[/I][/COLOR]
        [COLOR=#009900]}[/COLOR]

[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
همان طور که مشاهده می کنید، در ساده ترین شکل ممکن برای کدهای یک Activity ، تنها روش onCreate را داریم. در واقع با رفتن به یک Activity ، این روش onCreate است که اجرا می شود. بنابراین رابط گرافیکی متناظر با Activity به کاربر نمایش داده می شود و از این به بعد، اینکه چه کدی اجرا شود، بستگی به انتخاب های کاربر دارد. بنابراین کاربر انتخاب هایی مثل گزینه های موجود در خود رابط گرافیکی Activity و همچنین فشار دادن دکمه های گوشی را دارد.

فرض کنیم که در رابط گرافیکی Activity ، یک دکمه باشد که با اشاره کاربر بر روی آن، به یک Activity دیگر وارد شویم، اما برای این Activity چه اتفاقی می افتد ؟

با رفتن به یک Activity جدید، این Activity به حالت توقف موقتی (pause) یا حالت توقف کامل (stop) در می آید.


تفاوت بین دو حالت توقف موقتی (pause) و حالت توقف کامل (stop) :
اگر با شروع Activity جدید، بتوانیم بخشی از Activity قبلی را ببینیم، Activity قبلی در حالت pause قرار گرفته است، اما اگر نتوانیم بخشی از آن را ببینیم، Activity قبلی در حالت stop قرار گرفته است.


تعیین یک سری کد برای اجرا شدن در هنگام وقوع یکی از دو حالت توقف موقتی (pause) و حالت توقف کامل (stop) :
برای هر یک از دو حالت pause یا stop ، روش هایی (methods) در نظر گرفته شده است که با نوشتن کدهای آنها در میان کدهای Activity ، می توانیم تعیین کنیم که با وقوع هر یک از این دو حالت، یک سری کد اجرا شود. به عنوان مثال، برای حالت pause ، یک روش (method) با نام onPause در نظر گرفته شده است، یعنی اینکه با پیش آمدن حالت pause برای Activity ، کدهای موجود در این روش اجرا خواهند شد. روش onPause ، کدهایی مشابه کد زیر خواهد داشت :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]        @Override
        [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onPause[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
                [B]super[/B].[COLOR=#006633]onPause[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                
                [COLOR=#666666][I]// your codes for pause[/I][/COLOR]
        [COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
و محل قرارگیری آن در میان کل کدهای Activity ، به صورت زیر می باشد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]package[/B] [COLOR=#006699]com.kelidestan.com[/COLOR][COLOR=#339933];[/COLOR]

[B]import[/B] [COLOR=#006699]android.os.Bundle[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.app.Activity[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.Menu[/COLOR][COLOR=#339933];[/COLOR]

[B]public[/B] [B]class[/B] NewActivity [B]extends[/B] Activity [COLOR=#009900]{[/COLOR]

        @Override
        [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onCreate[COLOR=#009900]([/COLOR]Bundle savedInstanceState[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]super[/B].[COLOR=#006633]onCreate[/COLOR][COLOR=#009900]([/COLOR]savedInstanceState[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                setContentView[COLOR=#009900]([/COLOR]R.[COLOR=#006633]layout[/COLOR].[COLOR=#006633]new_activity[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                
                [COLOR=#666666][I]// your codes[/I][/COLOR]
        [COLOR=#009900]}[/COLOR]

        @Override
        [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onPause[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
                [B]super[/B].[COLOR=#006633]onPause[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                
                [COLOR=#666666][I]// your codes for pause[/I][/COLOR]
        [COLOR=#009900]}[/COLOR]
        
[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
اما به کار بردن روش onPause اختیاری است و تنها آن را در صورتی به کار می بریم که بخواهیم هنگام pause شدن Activity ، یک سری کد اجرا شود. بنابراین بر اساس اینکه روش onPause در کدهای Activity نوشته شده باشد یا نه، دو حالت داریم که آنها را در ادامه شرح می دهیم :


حالت اول : روش onPause در Activity نوشته نشده باشد :
چنانچه در کدهای Activity ، روش onPause نوشته نشده باشد، بنابراین Activity به حالت pause می رود، به این صورت که دیگر قابل تعامل برای کاربر نیست و یک Activity در پس زمینه (background activity) می باشد. بنابراین عملیات های آن متوقف می شود تا حافظه (memory) به Activity فعلی (foreground activity) که در حال کار کردن با آن هستیم، اختصاص یابد.

زمانی که دوباره به آن Activity که یک Activity در پس زمینه (background activity) است، برمی گردیم (مثلا با اشاره بر روی دکمه Back گوشی)، عملیات resume برای Activity اجرا خواهد شد (نه عملیات create ، یعنی Activity از ابتدا اجرا نمی شود، بلکه ادامه اجرای کدهای آن را خواهیم داشت). اگر به عکس مربوط به چرخه Activity نگاهی بیندازید، مشاهده می کنید که یک روش هم با نام onResume برای عملیات resume پیش بینی شده است که می توانید کدهای مورد نظر خود را در آن بنویسید، ولی بیشتر به این نکته توجه داشته باشید که resume شدن، باعث اجرای دوباره روش onReume می شود، نه اجرای دوباره روش های onCreate و onStart .

دقت شود که چون روش onResume اجرا می شود، بنابراین باید ببینیم که اصلا کدی برای روش onResume در میان کدهای Activity نوشته شده است یا خیر.اگر کدی وجود داشته باشد، هنگام resume شدن Activity ، اجرا می شوند، اما اگر کدی وجود نداشته باشد، تنها همان حالت قبلی Activity و ادامه اجرای کدهای آن را خواهیم داشت.



حالت دوم : روش onPause در Activity نوشته شده باشد :
ابتدا کدهایی که در روش onPause از کدهای Activity نوشته ایم اجرا خواهد شد، سپس همان عملیات های مربوط به حالت اول که بیان کردیم، اجرا می شود (همان عملیات ها اجرا می شود).

نکته :
دو حالتی که برای عملیات pause ذکر کردیم، برای عملیات stop نیز به همین صورت خواهد بود (مشابه هستند)، با این تفاوت که به جای اجرای روش onPause ، اجرای روش onStop را خواهیم داشت و همچنین در صورت بازگشت به Activity ، روش هایی که در شکل زیر با فلش نمایش داده ایم، اجرا خواهند شد :

981.jpg

از دست رفتن وضعیت قبلی Activity قرار گرفته در حالت pause و یا حالت stop ، به دلیل کمبود حافظه (memory) گوشی :
گاهی اوقات که گوشی اندروید، از نظر حافظه (memory)، برای اجرای برنامه های با اولویت بالاتر، با مشکل روبرو می شود (حافظه کم می آورد)، آن Activity ای که می خواهد در یکی از دو حالت pause یا stop قرار بگیرد را به طور کامل می بندد (پردازش کل برنامه متوقف می شود)، به گونه ای که با رجوع بعدی کاربر به آن Activity ، از اول اجرا خواهد شد (یعنی شروع با اجرای روش onCreate و ادامه همان روند عادی). بنابراین در این حالت، وضعیت قبلی Activity از دست می رود. این مورد را در شکل زیر (شکل چرخه Activity) با دو علامت در کنار روش های onPause و onStop مشخص کرده ایم :

980.jpg

در واقع، پس از اجرای روش onPause یا روش onStop ، اگر گوشی، حافظه را برای برنامه های با اولویت بالاتر نیاز داشته باشد، آن Activity را به طور کامل خواهد بست (پردازش کل برنامه متوقف می شود) و Activity در یکی از آن دو حالت pause یا stop قرار نمی گیرد.


مواردی که خودمان تعیین می کنیم که به آن Activity قبلی بازنگردیم :

گاهی اوقات نیز خودمان تعیین می کنیم که اگر از این Activity به Activity دیگری منتقل شدیم، دیگر کاربر نتواند به این Activity بازگردد. برخی از موارد مربوط به آن را ذکر می کنیم (فرض می کنیم که به حالت pause رفته است و مواردی که گفته می شود، برای حالت stop نیز مشابه است و تنها باید روش های مربوط به حالت stop و نکات آن را در نظر بگیرید) :
* در میان کدهای روش onPause در Activity قبلی، با یک سری کد، تعیین می کنیم که Activity قبلی به طور کامل بسته شود (یعنی destroy شدن Activity).
* در Activity بعدی، یک سری کد می نویسیم که عملکرد دکمه Back گوشی را در آن Activity تغییر بدهد، یعنی با اشاره کاربر بر روی دکمه Back گوشی، دیگر به Activity قبلی باز نمی گردیم، بلکه یک سری کد که خود کاربر تعیین کرده است، اجرا خواهد شد.
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
بازگشت به یک Activity موجود در پس زمینه

بازگشت به یک Activity موجود در پس زمینه

بازگشت به یک Activity موجود در پس زمینه (که به حالت Stop یا Pause رفته)
(یا به اصطلاح، Resume کردن یک Activity موجود در پس زمینه)،
با روش Intent ، در برنامه نویسی اندروید

همان طور که می دانید، وقتی از یک Activity وارد یک Activity جدید می شویم، Activity قبلی به حالت Stop یا Pause می رود. هنگامی که ما درون Activity جدید هستیم، اگر روش Intent را به شکل زیر به کار ببریم، یک اجرای جدید از آن Activity خواهیم داشت، یعنی دو اجرا از آن Activity در صف Activity ها قرار می گیرد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]Intent intent [COLOR=#339933]=[/COLOR] [B]new[/B] Intent[COLOR=#009900]([/COLOR]Activity_2.[B]this[/B], Activity_1.[B]class[/B][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
startActivity[COLOR=#009900]([/COLOR]intent[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
در کد بالا، Activity_2 را برابر نام Activity فعلی در نظر گرفته ایم و Activity_1 نیز نام Activity قبلی است که در آن بوده ایم و اکنون در پس زمینه می باشد. با کد بالا، دو بار Activity_1 در صف Activity ها وجود خواهد داشت، یعنی اگر همین طور بر روی دکمه Back گوشی اشاره کنیم، دو بار آن را مشاهده می کنیم (دو اجرای جداگانه).

اما ممکن است که ما بخواهیم به همان اجرای قبلی Activity که در پس زمینه قرار گرفته است برگردیم، برای این منظور، باید یک Flag را برای روش Intent به کار ببریم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]Intent intent [COLOR=#339933]=[/COLOR] [B]new[/B] Intent[COLOR=#009900]([/COLOR]Activity_2.[B]this[/B], Activity_1.[B]class[/B][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
intent.[COLOR=#006633]setFlags[/COLOR][COLOR=#009900]([/COLOR]Intent.[COLOR=#006633]FLAG_ACTIVITY_REORDER_TO_FRONT[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
startActivity[COLOR=#009900]([/COLOR]intent[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
کد بالا باعث می شود که همان اجرای موجود از Activity_1 که در پس زمینه است را دوباره ببینیم (Resume شود) و اگر با زدن دکمه Back از آن خارج شویم و همین طور دکمه Back را بزنیم، دیگر آن را نخواهیم دید (سایر Activity های موجود در پس زمینه را با همان ترتیبشان خواهیم دید و در نهایت از برنامه اندروید خارج می شویم (وقتی دیگر هیچ Activity دیگری در پس زمینه باقی نمانده باشد)).
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
به دست آوردن Context (برای یک Activity یا برای Application)، در برنامه نویسی اندروید

به دست آوردن 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 را به دست آوریم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]baseContext.[COLOR=#006633]getApplicationContext[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][/FONT]
[/FONT][/COLOR]
در کدهای بالا، به جای عبارت baseContext ، باید Context مربوط به آن Activity که در آن هستیم را بنویسیم (یا Context مربوط به موارد دیگر).همچنین اگر بخواهیم Context مربوط به یک Activity را به دست آوریم، باید در میان کدهای آن Activity ، کد زیر را بنویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]getApplication[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][/FONT]
[/FONT][/COLOR]
و یا با روش زیر (در مواردی مثل کدنویسی در Fragment ها و ...) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]getActivity[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][/FONT]
[/FONT][/COLOR]
همچنین، چنانچه کلاسی (class) که برای آن کد می نویسید، یکی از کلاس های زیر باشد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]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[/FONT]
[/FONT][/COLOR]
آنگاه می توانید با استفاده از کلمه زیر، به Context ارجاع بدهید :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]this[/B][/FONT]
[/FONT][/COLOR]
[h=4]نکته :[/h]دقت شود که اگر یک کلاس (class) جدید تعریف کنیم و در آن به Context نیاز داشته باشیم، آنگاه باید Context را به آن ارسال نماییم (یعنی Context مربوط به Activity). مثلا فرض کنید که بخواهیم یک کلاس (class) با نام MyClass بسازیم که از گسترش Application ساخته شود و هنگام ارجاع به آن در یک Activity ، بخواهیم Context مربوط به Activity را به آن ارسال کنیم، بنابراین باید ساختار آن کلاس (class) را به صورت کدهای زیر بنویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]public[/B] [B]class[/B] MyClass [B]extends[/B] Application [COLOR=#009900]{[/COLOR]
        
    [B]private[/B] [COLOR=#003399]Context[/COLOR] context[COLOR=#339933];[/COLOR]

    [B]public[/B] MyClass [COLOR=#009900]([/COLOR][COLOR=#003399]Context[/COLOR] context[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
        [B]this[/B].[COLOR=#006633]context[/COLOR] [COLOR=#339933]=[/COLOR] context[COLOR=#339933];[/COLOR]
    [COLOR=#009900]}[/COLOR]

[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
اکنون برای ارسال Context مربوط به Activity ، به کلاس MyClass ، باید در میان کدهای Activity ، کدهای زیر را بنویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]MyClass myClass [COLOR=#339933]=[/COLOR] [B]new[/B] MyClass[COLOR=#009900]([/COLOR][B]this[/B][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
همان طور که مشاهده می کنید، از کلاس MyClass ، یک شیء (object) با نام myClass ساخته ایم و هنگام این فرآیند، Context مربوط به Activity را به کلاس ارسال کرده ایم (کلمه this به Context مربوط به Activity اشاره می کند).
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
به دست آوردن Intent مربوط به یک Activity ، با کدنویسی در میان کدهای آن Activity ، با روش getIntent ، در برنامه نویسی اندروید

به دست آوردن Intent مربوط به یک Activity ، با کدنویسی در میان کدهای آن Activity ، با روش getIntent ، در برنامه نویسی اندروید

برای به دست آوردن Intent مربوط به یک Activity ، باید کد زیر را در میان کدهای آن Activity بنویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]Intent intent [COLOR=#339933]=[/COLOR] getIntent[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
تغییر رنگ پس زمینه یک Activity ، در برنامه نویسی اندروید

تغییر رنگ پس زمینه یک Activity ، در برنامه نویسی اندروید

فرض کنید که بخواهیم رنگ پس زمینه یک Activity را تغییر بدهیم، برای این منظور، می توانیم به دو روش زیر عمل کنیم :

[h=2]روش اول : تعیین رنگ پس زمینه Activity ، با کدنویسی در فایل xml متناظر با Activity[/h]همان طور که می دانید، برای Activity ، یک فایل xml متناظر داریم که عناصر گرافیکی Activity و در کل، ساختار گرافیکی Activity در آن تعریف می شود. فرض می کنیم که فایل xml متناظر با Activity در ابتدا دارای کدهای زیر باشد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<[/COLOR]LinearLayout xmlns[COLOR=#339933]:[/COLOR]android[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/apk/res/android"[/COLOR]
    xmlns[COLOR=#339933]:[/COLOR]tools[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/tools"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR] [COLOR=#339933]>[/COLOR]

[COLOR=#339933]</[/COLOR]LinearLayout[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
برای آنکه رنگ پس زمینه Activity را برابر رنگ آبی تعیین کنیم، باید مشخصه زیر را به تگ LinearLayout اضافه کنیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]android[COLOR=#339933]:[/COLOR]background[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"#0000FF"[/COLOR][/FONT]
[/FONT][/COLOR]
یعنی کدها به صورت زیر خواهند بود :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<[/COLOR]LinearLayout xmlns[COLOR=#339933]:[/COLOR]android[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/apk/res/android"[/COLOR]
    xmlns[COLOR=#339933]:[/COLOR]tools[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/tools"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
    android[COLOR=#339933]:[/COLOR]background[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"#0000FF"[/COLOR] [COLOR=#339933]>[/COLOR]

[COLOR=#339933]</[/COLOR]LinearLayout[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
[h=2]روش دوم : تغییر رنگ پس زمینه Activity ، با کدنویسی در فایل java مربوط به Activity[/h]برای اینکه بخواهیم رنگ پس زمینه یک Activity را تغییر بدهیم، باید در فایل java مربوط به آن Activity ، کدهای زیر را بنویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]getWindow[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getDecorView[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]setBackgroundColor[/COLOR][COLOR=#009900]([/COLOR][COLOR=#003399]Color[/COLOR].[COLOR=#006633]RED[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
کد بالا باعث می شود که پس زمینه Activity به رنگ قرمز نمایش داده شود، شما می توانید رنگ دلخواه خود را انتخاب کنید.
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
نمایش یک عکس در پس زمینه یک Activity ، در برنامه نویسی اندروید

نمایش یک عکس در پس زمینه یک Activity ، در برنامه نویسی اندروید

فرض کنید که بخواهیم یک عکس را در پس زمینه یک Activity نمایش بدهیم، برای این منظور، می توانیم به دو روش زیر عمل کنیم :

[h=2]روش اول : تعیین عکس پس زمینه Activity ، با کدنویسی در فایل xml متناظر با Activity[/h]همان طور که می دانید، برای Activity ، یک فایل xml متناظر داریم که عناصر گرافیکی Activity و در کل، ساختار گرافیکی Activity در آن تعریف می شود. فرض می کنیم که فایل xml متناظر با Activity در ابتدا دارای کدهای زیر باشد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<[/COLOR]LinearLayout xmlns[COLOR=#339933]:[/COLOR]android[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/apk/res/android"[/COLOR]
    xmlns[COLOR=#339933]:[/COLOR]tools[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/tools"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR] [COLOR=#339933]>[/COLOR]

[COLOR=#339933]</[/COLOR]LinearLayout[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
فرض می کنیم که یک عکس با نام myImage درون یکی از پوشه های drawable از پروژه اندروید داریم (کاری به پسوند آن عکس نداریم، مثلا می تواند myImage.png باشد)، اکنون برای آنکه آن عکس را به عنوان پس زمینه Activity تعیین کنیم، باید مشخصه زیر را به تگ LinearLayout اضافه کنیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]android[COLOR=#339933]:[/COLOR]background[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@drawable/myImage"[/COLOR][/FONT]
[/FONT][/COLOR]
یعنی کدها به صورت زیر خواهند بود :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<[/COLOR]LinearLayout xmlns[COLOR=#339933]:[/COLOR]android[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/apk/res/android"[/COLOR]
    xmlns[COLOR=#339933]:[/COLOR]tools[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/tools"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
    android[COLOR=#339933]:[/COLOR]background[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@drawable/myImage"[/COLOR] [COLOR=#339933]>[/COLOR]

[COLOR=#339933]</[/COLOR]LinearLayout[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
[h=2]روش دوم : تعیین عکس پس زمینه Activity ، با کدنویسی در فایل java مربوط به Activity[/h]فرض می کنیم که یک عکس با نام myImage درون یکی از پوشه های drawable از پروژه اندروید داریم (کاری به پسوند آن عکس نداریم، مثلا می تواند myImage.png باشد)، اکنون برای آنکه آن عکس را به عنوان پس زمینه Activity تعیین کنیم، باید در فایل java مربوط به آن Activity ، کدهای زیر را بنویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]LinearLayout layout [COLOR=#339933]=[/COLOR][COLOR=#009900]([/COLOR]LinearLayout[COLOR=#009900])[/COLOR] findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]linearLayout1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
layout.[COLOR=#006633]setBackgroundDrawable[/COLOR][COLOR=#009900]([/COLOR]getResources[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getDrawable[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]drawable[/COLOR].[COLOR=#006633]myImage[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
دقت کنید که کدهای بالا، برای فایل xml زیر که متناظر با Activity می باشد، نوشته شده است :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<[/COLOR]LinearLayout xmlns[COLOR=#339933]:[/COLOR]android[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/apk/res/android"[/COLOR]
    xmlns[COLOR=#339933]:[/COLOR]tools[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/tools"[/COLOR]
    android[COLOR=#339933]:[/COLOR]id[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@+id/linearLayout1"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
    android[COLOR=#339933]:[/COLOR]orientation[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"vertical"[/COLOR] [COLOR=#339933]>[/COLOR]

[COLOR=#339933]</[/COLOR]LinearLayout[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
نکته مهم این است که در فایل xml مورد نظر، لایه به صورت LinearLayout انتخاب شده است (برای موارد دیگر، باید کدهای java را که ذکر کردیم، برای آن نوع لایه بنویسیم). همچنین برای LinearLayout ، یک id برابر linearLayout1 در نظر گرفته ایم که در کدهای java ، به آن ارجاع داده ایم.
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
شفاف کردن پس زمینه (background) یک Activity ، در برنامه نویسی اندروید

شفاف کردن پس زمینه (background) یک Activity ، در برنامه نویسی اندروید

برای شفاف کردن پس زمینه (background) یک Activity ، باید در فایل AndroidManifest.xml از پروژه اندروید، کد زیر را در تگ activity مربوط به آن Activity ، بنویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]android[COLOR=#339933]:[/COLOR]theme[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@android:style/Theme.Translucent"[/COLOR][/FONT]
[/FONT][/COLOR]
به عنوان مثال :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<[/COLOR]activity
    android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"com.kelidestan.com.MyActivity"[/COLOR]
    android[COLOR=#339933]:[/COLOR]theme[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@android:style/Theme.Translucent"[/COLOR]
    android[COLOR=#339933]:[/COLOR]label[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@string/title_my_activity"[/COLOR] [COLOR=#339933]>[/COLOR]
[COLOR=#339933]</[/COLOR]activity[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
جلوگیری از نمایش صفحه سیاه (Black Screen)، هنگام رفتن به Activity جدید (قبل از نمایش Activity جدید)، در برنامه نویسی اندروید

جلوگیری از نمایش صفحه سیاه (Black Screen)، هنگام رفتن به Activity جدید (قبل از نمایش Activity جدید)، در برنامه نویسی اندروید

شاید برای شما پیش آمده باشد که هنگامی که قصد دارید از یک Activity به Activity دیگر بروید، قبل از نمایش Activity بعدی، یک صفحه سیاه (Black Screen) نمایش داده شده است. برای جلوگیری از این اتفاق، کدهای رفتن به Activity بعدی را به صورت زیر می نویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]Intent intent [COLOR=#339933]=[/COLOR] [B]new[/B] Intent[COLOR=#009900]([/COLOR]Activity1.[B]this[/B], Activity2.[B]class[/B][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
intent.[COLOR=#006633]setFlags[/COLOR][COLOR=#009900]([/COLOR]Intent.[COLOR=#006633]FLAG_ACTIVITY_NO_ANIMATION[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
intent.[COLOR=#006633]setFlags[/COLOR][COLOR=#009900]([/COLOR]Intent.[COLOR=#006633]FLAG_ACTIVITY_NEW_TASK[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
startActivity[COLOR=#009900]([/COLOR]intent[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
overridePendingTransition [COLOR=#009900]([/COLOR][COLOR=#CC66CC]0[/COLOR], [COLOR=#CC66CC]0[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
در کدهای بالا، نام Activity فعلی را برابر Activity1 و نام Activity بعدی را برابر Activity2 در نظر گرفته ایم.
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
به دست آوردن نام Activity فعلی (که در حال اجرای کدهای آن هستیم)، در برنامه نویسی اندروید

به دست آوردن نام Activity فعلی (که در حال اجرای کدهای آن هستیم)، در برنامه نویسی اندروید

برای به دست آوردن نام Activity فعلی (که در حال اجرای کدهای آن هستیم) و ذخیره کردن نام در یک رشته (String)، کد زیر را می نویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#003399]String[/COLOR] Activity_name [COLOR=#339933]=[/COLOR] [B]this[/B].[COLOR=#006633]getClass[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getSimpleName[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
دقت شود که این کد را در روش هایی (methods) مثل setOnClickListener (و OnClickListener) نمی توانیم به کار ببریم زیرا مقداری غیر از نام Activity به دست می آید. در این موارد، باید نام خود Activity هم در در کد ذکر شود (یعنی همان که دنبالش هستیم را باید بنویسیم !)، مثلا برای Activity با نام MainActivity ، باید کد زیر را بنویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#003399]String[/COLOR] Activity_name [COLOR=#339933]=[/COLOR] MainActivity.[B]this[/B].[COLOR=#006633]getClass[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getSimpleName[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
مثال کاملتر :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#003399]Button[/COLOR] b [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR][COLOR=#003399]Button[/COLOR][COLOR=#009900])[/COLOR] findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]button1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
b.[COLOR=#006633]setOnClickListener[/COLOR][COLOR=#009900]([/COLOR][B]new[/B] OnClickListener[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                                                 
        @Override
        [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] onClick[COLOR=#009900]([/COLOR][COLOR=#003399]View[/COLOR] v[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [COLOR=#003399]String[/COLOR] Activity_name [COLOR=#339933]=[/COLOR] MainActivity.[B]this[/B].[COLOR=#006633]getClass[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getSimpleName[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                Toast.[COLOR=#006633]makeText[/COLOR][COLOR=#009900]([/COLOR]getApplicationContext[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR], Activity_name, Toast.[COLOR=#006633]LENGTH_SHORT[/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]show[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]
        
[COLOR=#009900]}[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
بستن (destroy کردن) و اجرای دوباره یک Activity (در اصطلاح، restart یا refresh کردن Activity)

بستن (destroy کردن) و اجرای دوباره یک Activity (در اصطلاح، restart یا refresh کردن Activity)

بستن (destroy کردن) و اجرای دوباره یک Activity (در اصطلاح، restart یا refresh کردن Activity)،
با اشاره کاربر بر روی یک دکمه (Button)،
در برنامه نویسی اندروید


در این مبحث قصد داریم آموزش بدهیم که چگونه می توانیم در یک Activity ، دکمه ای (Button) را قرار بدهیم که با اشاره بر روی آن دکمه، Activity بسته شده (destroy شود) و دوباره از ابتدا اجرا شود.ابتدا در لایه گرافیکی Activity ، یک دکمه (Button) قرار می دهیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<[/COLOR]LinearLayout xmlns[COLOR=#339933]:[/COLOR]android[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/apk/res/android"[/COLOR]
    xmlns[COLOR=#339933]:[/COLOR]tools[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/tools"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR] [COLOR=#339933]>[/COLOR]

    [COLOR=#339933]<[/COLOR][COLOR=#003399]Button[/COLOR]
        android[COLOR=#339933]:[/COLOR]id[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@+id/button1"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"wrap_content"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"wrap_content"[/COLOR]
        android[COLOR=#339933]:[/COLOR]text[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"Button"[/COLOR] [COLOR=#339933]/>[/COLOR]

[COLOR=#339933]</[/COLOR]LinearLayout[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
سپس کدهای Activity را به صورت زیر می نویسیم (نام Activity را برابر Activity_3 در نظر گرفته ایم) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]package[/B] [COLOR=#006699]com.www.www.iran-eng.ir[/COLOR][COLOR=#339933];[/COLOR]

[B]import[/B] [COLOR=#006699]android.app.Activity[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.content.Intent[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.os.Bundle[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.View[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.View.OnClickListener[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.widget.Button[/COLOR][COLOR=#339933];[/COLOR]

[B]public[/B] [B]class[/B] Activity_3 [B]extends[/B] Activity [COLOR=#009900]{[/COLOR]
        
        [B]private[/B] [COLOR=#000066][B]int[/B][/COLOR] restart_or_not [COLOR=#339933]=[/COLOR] [COLOR=#CC66CC]0[/COLOR][COLOR=#339933];[/COLOR]

        @Override
        [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onCreate[COLOR=#009900]([/COLOR]Bundle savedInstanceState[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]super[/B].[COLOR=#006633]onCreate[/COLOR][COLOR=#009900]([/COLOR]savedInstanceState[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                setContentView[COLOR=#009900]([/COLOR]R.[COLOR=#006633]layout[/COLOR].[COLOR=#006633]activity_3[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                
                [COLOR=#003399]Button[/COLOR] b [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR][COLOR=#003399]Button[/COLOR][COLOR=#009900])[/COLOR] findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]button1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                b.[COLOR=#006633]setOnClickListener[/COLOR][COLOR=#009900]([/COLOR][B]new[/B] OnClickListener[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                                                                 
                        @Override
                        [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] onClick[COLOR=#009900]([/COLOR][COLOR=#003399]View[/COLOR] v[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                                restart_or_not [COLOR=#339933]=[/COLOR] [COLOR=#CC66CC]1[/COLOR][COLOR=#339933];[/COLOR]
                                finish[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                        [COLOR=#009900]}[/COLOR]
                [COLOR=#009900]}[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                
        [COLOR=#009900]}[/COLOR]
        

        @Override
        [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onDestroy[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
                [B]if[/B][COLOR=#009900]([/COLOR]restart_or_not[COLOR=#339933]==[/COLOR][COLOR=#CC66CC]1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR]
                        Intent intent [COLOR=#339933]=[/COLOR] [B]new[/B] Intent[COLOR=#009900]([/COLOR][B]this[/B], Activity_3.[B]class[/B][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                        startActivity[COLOR=#009900]([/COLOR]intent[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                [COLOR=#009900]}[/COLOR]
                [B]super[/B].[COLOR=#006633]onDestroy[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]

        
[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
ابتدا یک متغیر را تعریف کرده ایم که توسط آن تشخیص می دهیم که کاربر قصد restart کردن Activity را دارد یا خیر (مقدار پیش فرض آن برابر 0 است) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]private[/B] [COLOR=#000066][B]int[/B][/COLOR] restart_or_not [COLOR=#339933]=[/COLOR] [COLOR=#CC66CC]0[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
با اشاره کاربر بر روی دکمه (Button) کدهای زیر اجرا می شوند :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]restart_or_not [COLOR=#339933]=[/COLOR] [COLOR=#CC66CC]1[/COLOR][COLOR=#339933];[/COLOR]
finish[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
ابتدا مقدار متغیر restart_or_not را به 1 تغییر می دهیم و پس روش finish اجرا می شود که برای بستن (destroy کردن) Activity به کار می رود، اما ما قصد داریم که بعد از بسته شدن، دوباره Activity اجرا شود، بنابراین روش onDestroy را به صورت زیر نوشته ایم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]@Override
[B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onDestroy[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
        [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
        [B]if[/B][COLOR=#009900]([/COLOR]restart_or_not[COLOR=#339933]==[/COLOR][COLOR=#CC66CC]1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR]
                Intent intent [COLOR=#339933]=[/COLOR] [B]new[/B] Intent[COLOR=#009900]([/COLOR][B]this[/B], Activity_3.[B]class[/B][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                startActivity[COLOR=#009900]([/COLOR]intent[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]
        [B]super[/B].[COLOR=#006633]onDestroy[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
در این روش، ابتدا مقدار restart_or_not را چک می کند و اگر برابر 1 بود، کد زیر اجرا خواهد شد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]Intent intent [COLOR=#339933]=[/COLOR] [B]new[/B] Intent[COLOR=#009900]([/COLOR][B]this[/B], Activity_3.[B]class[/B][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
startActivity[COLOR=#009900]([/COLOR]intent[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
اجرای کد بالا باعث می شود که دوباره Activity از نو اجرا شود (نام Activity را برابر Activity_3 در نظر گرفته ایم).

شاید این پرسش به وجود بیاید که چرا اصلا متغیر restart_or_not تعریف شد و قبل از اجرای دوباره Activity ، ابتدا چک می کنیم که مقدار آن برابر 1 باشد. متغیر restart_or_not را به این دلیل به کار برده ایم که ممکن است کاربر، دکمه Back گوشی را فشار دهد که از Activity خارج شود (destroy شود)، چون برای روش onDestroy کد نوشته ایم، بنابراین آن کدها اجرا خواهند شد، بنابراین باید حتما مقدار متغیر restart_or_not برابر 1 باشد تا دوباره وارد Activity شویم و تنها در صورتی برابر 1 خواهد بود که کاربر بر روی دکمه مربوط به restart شدن Activity اشاره کرده باشد (نه در حالت معمولی که کاربر، دکمه Back گوشی را فشار می دهد).

[h=4]نکته :[/h]اگر نخواهیم نام Activity را در کدها ذکر کنیم، می توانیم با کد زیر، intent مربوط به آن را به دست بیاوریم (این کد در هر Activity که اجرا شود، intent مربوط به Activity را به ما می دهد) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]Intent intent [COLOR=#339933]=[/COLOR] getIntent[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
روشی دیگر برای بستن (destroy کردن) و اجرای دوباره یک Activity

روشی دیگر برای بستن (destroy کردن) و اجرای دوباره یک Activity

روشی دیگر برای بستن (destroy کردن) و اجرای دوباره یک Activity
(در اصطلاح، restart یا refresh کردن Activity)،
با استفاده از روش onActivityResult ،
در برنامه نویسی اندروید



برای restart کردن یک Activity ، ابتدا در میان کدهای آن Activity ، روش onActivityResult را به صورت زیر کدنویسی می کنیم (Override می کنیم) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]@Override
[B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onActivityResult[COLOR=#009900]([/COLOR][COLOR=#000066][B]int[/B][/COLOR] requestCode, [COLOR=#000066][B]int[/B][/COLOR] resultCode, Intent data[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]  
    [B]super[/B].[COLOR=#006633]onActivityResult[/COLOR][COLOR=#009900]([/COLOR]requestCode, resultCode, data[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]     

    [B]if[/B] [COLOR=#009900]([/COLOR]requestCode [COLOR=#339933]==[/COLOR] [COLOR=#CC66CC]1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR]
        finish[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
    [COLOR=#009900]}[/COLOR]
[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
یعنی به عنوان مثال، موقعیت آن در Activity باید مشابه کد زیر باشد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]package[/B] [COLOR=#006699]com.www.www.iran-eng.ir[/COLOR][COLOR=#339933];[/COLOR]

[B]import[/B] [COLOR=#006699]java.util.Random[/COLOR][COLOR=#339933];[/COLOR]

[B]import[/B] [COLOR=#006699]android.app.Activity[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.content.Intent[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.os.Bundle[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.util.Log[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.View[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.View.OnClickListener[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.widget.Button[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.widget.Toast[/COLOR][COLOR=#339933];[/COLOR]

[B]public[/B] [B]class[/B] MainActivity [B]extends[/B] Activity [COLOR=#009900]{[/COLOR]

        @Override
        [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onCreate[COLOR=#009900]([/COLOR]Bundle savedInstanceState[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]super[/B].[COLOR=#006633]onCreate[/COLOR][COLOR=#009900]([/COLOR]savedInstanceState[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]         
                setContentView[COLOR=#009900]([/COLOR]R.[COLOR=#006633]layout[/COLOR].[COLOR=#006633]activity_main[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                
                [COLOR=#666666][I]// some code[/I][/COLOR]
        [COLOR=#009900]}[/COLOR]
        
        
        @Override
        [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onActivityResult[COLOR=#009900]([/COLOR][COLOR=#000066][B]int[/B][/COLOR] requestCode, [COLOR=#000066][B]int[/B][/COLOR] resultCode, Intent data[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]  
            [B]super[/B].[COLOR=#006633]onActivityResult[/COLOR][COLOR=#009900]([/COLOR]requestCode, resultCode, data[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]     

            [B]if[/B] [COLOR=#009900]([/COLOR]requestCode [COLOR=#339933]==[/COLOR] [COLOR=#CC66CC]1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR]
                finish[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
            [COLOR=#009900]}[/COLOR]
        [COLOR=#009900]}[/COLOR]

[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
سپس هر زمان که بخواهیم Activity را restart کنیم، باید یک سری کد اجرا شود، اما چگونگی کدها به این بستگی دارد که در چه محلی قصد داریم آنها را اجرا کنیم. برای محل کدها، دو حالت را در نظر می گیریم :

1- کدها در میان کدهای همان Activity که می خواهیم restart شود (مثلا با اشاره بر روی یک دکمه در خود Activity ، باعث restart شدن آن شویم).

2- کدها در میان کدهای کلاسی (Class) غیر از Activity مورد نظر که می خواهیم restart شود. این کلاس (Class) می تواند یک Activity دیگر، یک کلاس (Class) که خودمان تعریف کرده ایم، یک سرویس (Service) یا ... باشد.

[h=2]1- کدها در میان کدهای همان Activity که می خواهیم restart شود :[/h]در این حالت، کدهای زیر را در Activity اجرا می کنیم (برای restart شدن) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]Intent intent [COLOR=#339933]=[/COLOR] [B]new[/B] Intent[COLOR=#009900]([/COLOR][B]this[/B], MyActivity.[B]class[/B][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#666666][I]//intent.putExtra("someData", "Here is some data");[/I][/COLOR]
startActivityForResult[COLOR=#009900]([/COLOR]intent, [COLOR=#CC66CC]1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
در کد بالا، نام Activity را برابر MyActivity در نظر گرفته ایم.

[h=2]2- کدها در میان کدهای کلاسی (Class) غیر از Activity مورد نظر که می خواهیم restart شود :[/h]در این حالت، کدهای زیر را در کلاس (Class) مورد نظر اجرا می کنیم (برای restart شدن) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#666666][I]//intent.putExtra("someData", "Here is some data");[/I][/COLOR]
[COLOR=#009900]([/COLOR][COLOR=#009900]([/COLOR]Activity[COLOR=#009900])[/COLOR] myContext[COLOR=#009900])[/COLOR].[COLOR=#006633]startActivityForResult[/COLOR][COLOR=#009900]([/COLOR]myIntent, [COLOR=#CC66CC]1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
دقت شود که ابتدا Context و Intent مربوط به Activity (همان Activity که می خواهیم restart شود) را به آن کلاس ارسال کرده و سپس روش startActivityForResult را به شکل بالا اجرا می کنیم. در کد بالا، myContext و myIntent ، همان Context و Intent مربوط به Activity هستند که آن دو را به کلاس ارسال کرده ایم. در این حالت، فرض کرده ایم که Activity قبلا اجرا شده (یعنی یا اکنون آن را می بینیم یا در پس زمینه است).در صورت نیاز، برای مشاهده چگونگی ساخت یک کلاس (class) جدید با قابلیت دریافت Context مربوط به Activity ، آموزش های قبلی را بخوانید.
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
چگونگی اجرای روش startActivityForResult ، با کدنویسی در کلاسی (class) غیر از کلاس Activity ، در برنامه نویسی اندروید

چگونگی اجرای روش startActivityForResult ، با کدنویسی در کلاسی (class) غیر از کلاس Activity ، در برنامه نویسی اندروید

برای اجرای روش startActivityForResult با کدنویسی در کلاسی (class) غیر از کلاس Activity ، ابتدا باید Context و Intent مربوط به Activity را به آن کلاس ارسال کرده و سپس روش startActivityForResult را به صورت زیر اجرا نمایید :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#009900]([/COLOR][COLOR=#009900]([/COLOR]Activity[COLOR=#009900])[/COLOR] myContext[COLOR=#009900])[/COLOR].[COLOR=#006633]startActivityForResult[/COLOR][COLOR=#009900]([/COLOR]myIntent, [COLOR=#CC66CC]1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
در کد بالا، myContext و myIntent ، همان Context و Intent مربوط به Activity هستند که آن دو را به کلاس ارسال کرده ایم.
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
اجرای یک روش (method) از یک Activity ، از طریق کدنویسی در کلاسی (Class) دیگر، در برنامه نویسی اندروید

اجرای یک روش (method) از یک Activity ، از طریق کدنویسی در کلاسی (Class) دیگر، در برنامه نویسی اندروید

ممکن است در یک Activity ، روشی (method) را تعریف کرده باشیم، اما در یک مورد خاص، قصد داشته باشیم که از کلاسی (Class) دیگر، آن روش (method) را اجرا کنیم. هدفمان از این کار هم می تواند این باشد که مثلا از طریق کلاسی (Class) دیگر بخواهیم با اجرای آن روش (method)، اطلاعاتی در Activity را تغییر بدهیم.

نام Activity را که در آن روش (method) تعریف شده است، برابر MainActivity در نظر می گیریم و کدهای آن را به صورت زیر می نویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]package[/B] [COLOR=#006699]com.www.www.iran-eng.ir[/COLOR][COLOR=#339933];[/COLOR]

[B]import[/B] [COLOR=#006699]android.app.Activity[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.os.Bundle[/COLOR][COLOR=#339933];[/COLOR]

[B]public[/B] [B]class[/B] MainActivity [B]extends[/B] Activity [COLOR=#009900]{[/COLOR]
        
    [COLOR=#000066][B]int[/B][/COLOR] myValue[COLOR=#339933];[/COLOR]

    @Override
    [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onCreate[COLOR=#009900]([/COLOR]Bundle savedInstanceState[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
        [B]super[/B].[COLOR=#006633]onCreate[/COLOR][COLOR=#009900]([/COLOR]savedInstanceState[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]         
        setContentView[COLOR=#009900]([/COLOR]R.[COLOR=#006633]layout[/COLOR].[COLOR=#006633]activity_main[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                
        [COLOR=#666666][I]// some code[/I][/COLOR]
    [COLOR=#009900]}[/COLOR]
        
    [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] myMethod [COLOR=#009900]([/COLOR][COLOR=#000066][B]int[/B][/COLOR] newValue[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
        [COLOR=#666666][I]// Change myValue [/I][/COLOR]
        myValue [COLOR=#339933]=[/COLOR] newValue[COLOR=#339933];[/COLOR]
    [COLOR=#009900]}[/COLOR]

[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
همان طور که در کد بالا مشاهده می کنید، متغیری از جنس int و با نام myValue در MainActivity تعریف کرده ایم. همچنین یک روش (method) را در MainActivity تعریف کرده ایم که myMethod نام دارد و یک مقدار از جنس int را دریافت کرده و سپس آن مقدار را در myValue ذخیره می کند.

بنابراین ما با اجرای روش myMethod ، می توانیم مقدار متغیر myValue را تغییر بدهیم و چون این متغیر در MainActivity تعریف شده است، در واقع اطلاعات MainActivity را تغییر داده ایم. بنابراین چنانچه بتوانیم روش myMethod را در کلاسی (Class) دیگر و مستقل از MainActivity اجرا نماییم، توانسته ایم که با کلاسی دیگر، اطلاعات MainActivity را تغییر بدهیم.

برای اجرای روش myMethod در کلاسی (Class) دیگر، باید کد زیر را در آن کلاس اجرا کنیم
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#009900]([/COLOR][COLOR=#009900]([/COLOR]MainActivity[COLOR=#009900])[/COLOR] myContext[COLOR=#009900])[/COLOR].[COLOR=#006633]myMethod[/COLOR][COLOR=#009900]([/COLOR][COLOR=#CC66CC]1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
در کد بالا، myContext همان Context مربوط به Activity (در اینجا Activity با نام MainActivity) می باشد که آن را به کلاس ارسال کرده ایم.
 
بالا