0

آموزش برنامه نویسی اندروید

 
hosseinb68
hosseinb68
کاربر طلایی1
تاریخ عضویت : بهمن 1389 
تعداد پست ها : 1269
محل سکونت : بوشهر

آموزش برنامه نویسی اندروید- قسمت ۲۷: اجزای تشکیل دهنده Activity یک اپلیکیشن
دوشنبه 30 دی 1392  9:31 AM


پس از آشنایی با نحوه ساخت آیکان در آموزش های بیست و چهار، بیست و پنج و بیست وششم، در این آموزش قصد داریم تا به طور جدی تر به مبحث برنامه نویسی اندروید بپردازیم.

برای این منظور پروژه ای که در آموزش هشتم ساختیم را در محیط برنامه نویسی اکلیپس باز نموده و از زیرشاخه پروژه ای که تحت عنوان My First Android Project ساخته بودیم، فولدر src را انتخاب نموده سپس از زیر مجموعه پکیج موجود فایل جاوای MainActivity را همانطور که در تصویر زیر با یک بیضی قرمز زنگ مشخص شده است را انتخاب می کنیم. با دو بار کلیک کردن روی نام این فایل خواهیم دید که در این فایل در محیط اکلیپس باز شده و کدهای داخل آن را در ادامه مطلب خواهیم دید:

920616-a27-IMAGE 1.jpg

اکنون کدی مشابه کد زیر خواهیم داشت:


  1. package com.behzadmoradi.mainpackage;
  2.  
  3. import android.app.Activity;
  4. import android.os.Bundle;
  5.  
  6. public class MainActivity extends Activity {
  7. /** Called when the activity is first created. */
  8. @Override
  9. public void onCreate(Bundle savedInstanceState) {
  10. super.onCreate(savedInstanceState);
  11. setContentView(R.layout.main);
  12. }
  13. }

اولین خط از کد فوق مربوط به نام پکیجی است که در حین ساخت پروژه تعریف می کنیم. در واقع وظیفه این پکیج جای دادن کلیه فایل های جاوا است که در حین ساخت یک اپلیکیشن ایجاد خواهیم کرد(برای آشنایی بیشتر با نحوه نامگذاری پکیج ها در اندروید، به آموزش چهارم مراجعه نمایید). پس از این خط دو خط کد دیگر وارد برنامه شده است که با کلید واژه import آغاز شده اند. به طور کلی این دو خط کد وظیفه دارند تا پکیج های مورد نیاز برای توسعه یک اپلیکیشن را به پروژه ما import یا "وارد" کنند که در ادامه به توضیح مفصل پیرامون هر یک از آنها خواهیم پرداخت. در حقیقت کلاس Activity به عنوان مهم ترین کلاس در ساخت یک اپلیکیشن اندرویدی است زیرا همانطور که قبلا توضیح داده شد در یک اپلیکیشن اندرویدی هر چیزی با یک Activity آغاز می شود و از همین رو است که کلاس اصلی که برای یک اپلیکیشن در حین ساخت یک پروژه تعریف می کنیم خصوصیاتی را از کلاس Activity به ارث می برد. به عبارت دیگر کد MainActivity extends Activity حاکی از آن است که کلاس MainActivity که در پروسه ساخت پروژه خود ایجاد کردیم برگرفته از کلاس Activity است، به عبارت دیگر از کلاس Activity که توسط برنامه نویسان سیستم عامل اندروید نوشته شده است ارث بری می کند. از آنجا که ما نیاز داریم تا بارها و بارها از کلاس Activity در اپلیکیشن خود استفاده کنیم، نیاز است تا این کلاس را از طریق کد import android.app.Activity; به پروژه خود وارد کنیم(لازم به ذکر است که می توانیم این کلاس را وارد برنامه نکرده و هر جا که خواستیم از این کلاس استفاده کنیم آدرس کامل آن را بنویسیم. به طور مثال در این پروژه می توانیم کدMainActivity extends android.app.Activity; را به اپلیکیشن خوداضافه کنیم اما این در حالی است که با اتخاذ این رویکرد می بایست کد بیشتری بنویسم که به نظر می رسد این کار منطقی نباشد(به منظور درک بهتر مبحث وارثت در زبان برنامه نویسی جاوا، به آموزش های سی دوم و سی سوم دوره آموزش برنامه نویسی جاوا در سایت نردبان مراجعه نمایید).

  1. @Override
  2. public void onCreate(Bundle savedInstanceState) {
  3. super.onCreate(savedInstanceState);
  4. setContentView(R.layout.main);
  5. }

کلاس Activity در برگیرندۀ متدهای فراوانی است که یکی از آنها همین متد onCreate است که در کد فوق مشاهده می شود. به طور کلی می توان گفت زمانیکه یک Activity ساخته می شود، چندین متد فراخوانده می شوند که اولین آنها متد onCreate است که با استفاده از آن خواهیم توانست هر کاری که تمایل داشته باشیم را اجرا کنیم. به طور مثال در این پروژه پس از فرا خواندن این متد قادر خواهیم شد تا GUI یا "همان رابط گرافیکی کاربر" برنامه که در طریق XML ساخته می شود و در فولدر layout که زیرمجموعه فولدر res می باشد و نام آن main.xml است را اجرا نماییم. در زبان برنامه نویسی جاوا می توانیم متدهای مرتبط با کلاسی مثل کلاس Activity که کلاس دیگری مثل کلاس MainActivity از آن ارث بری شده است را بسته به نیاز خود Override یا "بازنویسی" کنیم تا کد مد نظر خود را در آن اجرا کنیم(برای کسب اطلاعات بیشتر در مورد مفهوم Override به سری آموزش های زبان برنامه نویسی جاوا در سایت نردبان قسمت سی و دوم مراجعه نمایید). زمانیکه متدی را Override می کنیم دو گزینه پیش روی ما است: 1. اول اینکه می توانیم کلیه خصوصیات اولیه متد مد نظر که توسط برنامه نویسان سیستم عامل اندروید ایجاد شده را بازنویسی کنیم و یا 2. می توانیم طوری به بازنویسی یک متد بپردازیم که علاوه بر خصوصیات اصلی اش، خصوصیات جدیدی را هم که برای آن در نظر می گیریم را در برگیرد که در این صورت می بایست از دستور super استفاده کنیم. به عبارت دیگر زمانیکه از کلید واژه super در کد خود استفاده می کنیم، این دستور را به ماشین مجازی جاوا یا همان Dalvik VM می دهیم تا علاوه بر کدهای موجود در کلاس مرتبط با متد onCreate ،کدهای مد نظر ما را نیز اجرا نماید. در حقیقت اگر کد super.onCreate(savedInstanceState); را از اپلیکیشن خود حذف کنیم این دستور را به ماشین مجازی می دهیم که فقط کد بازنویسی شده ما را اجرا کند و به هیچ وجه کدهای مرتبط با کلاس Activity که در برگیرندۀ متد onCreate است را مد نظر قرار ندهد. اما نکته اینجا است که به هر حال این خط از کد برای اجرای اپلیکیشن الزامی است چرا که برای اجرای یک اپلیکیشن به طور کامل و بدون نقص به کدهای نوشته شده توسط برنامه نویسان سیستم عامل اندروید برای متد onCreate نیاز داریم(برای آشنایی بیشتر با دستور super به سری آموزش های زبان برنامه نویسی جاوا در سایت نردبان قسمت چهل و دوم مراجعه نمایید). همانطور که در کد فوق ملاحظه می شود، داخل پرانتز مقابل متد onCreate مرتبط با کلاس Avtivity یک پارامتر قرار گرفته است. در کد فوق مشاهده می شود که داخل پرانتز مقابل متد onCreate پارامتر Bundle savedInstanceState قرار گرفته است. این پارامتر شیئی تحت عنوان savedInstanceState است که از روی کلاس Bundle ساخته شده است. وظیفه ای که این پارامتر بر عهده دارد این است تا این امکان را به توسعه دهنده بدهد تا بتواند Value ها یا "مقادیری" را در اپلیکیشن خود ذخیره سازد(لازم به ذکر است نام savedInstanceState اختیاری بوده و به صورت خودکار توسط خود اکلیپس ایجاد می شود). حال از آنجا که شیئی از روی کلاس Bundle ساخته و آن را در پروژه خود مورد استفاده قرار داده ایم پس نیاز است تا کد import android.os.Bundle; را به پروژه خود خود import کنیم که اینکار به صورت خودکار توسط محیط برنامه نویسی اکلیپس انجام خواهد شد. در نهایت به متد setContentView(); می رسیم که این وظیفه را دارا است تا هرآنچه داخل آن قرار گرفت را به نمایش در آورد. در حقیقت با قرار دادن کد R.layout.main داخل پرانتز مقابل این متد این دستور را به ماشین مجازی می دهیم تا فایلی تحت عنوان main.xml که داخل فولدر layout که زیرمجموعه فولدر res قرار دارد را به نمایش در آورد. منظور از R هم فایلی است که در زیرشاخه فولدر gen قرار دارد. چنانچه این فایل را باز کنیم کدی به شکل زیر مشاهده خواهیم کرد:

920616-a27-IMAGE 2.jpg

همانطور که در تصویر فوق در کادر قرمز رنگ مشاهده می شود، یک id برای layout یی تحت عنوان main در نظر گرفته شده است که از طریق همین id است که به فایل XML یی تحت عنوان main دسترسی پیدا خواهیم کرد(برای کسب اطلاعات بیشتر پیرامون فایل R به آموزش نهم مراجعه نمایید).

تشکرات از این پست
amin_j
دسترسی سریع به انجمن ها