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

اکتیویتی (Activity) در اندروید چیست

اکتیویتی اندروید

به‌طور ساده به هر صفحه در اپلیکیشن اندرویدی یک اکتیویتی می‌گویند به طوری‌که هر بار از صفحه‌ای به صفحه‌ی دیگر می‌روید در واقع از یک اکتیویتی خارج شده و اکتیویتی دیگری را باز کرده‌اید.

برای ایجاد هر اکتیویتی ما به دو بخش مختلف نیاز داریم. بخش اول یا همان Front-end مروبط به نمایش ظاهری یا همان User Interface (UI) می‌شود و بخش دوم یا Back-end جایی است که تعیین می کنیم اکتیویتی قرار است چه کاری را انجام دهد و در واقع عملیات برنامه‌نویسی در این بخش صورت می‌گیرد.

Front-end در اندروید توسط کدهای XML صورت می‌گیرد و بخش Back-end را با زبان‌های برنامه نویسی مختلفی انجام می‌دهند که ما در این سری آموزشی‌ها از زبان مرسوم یعنی جاوا استفاده می‌کنیم.
اگر بخواهیم مثالی ساده بزنیم XML را می‌شود مترادف HTML و Java را مترادف PHP در طراحی یک سایت قرار داد.
اگر هنوز در درک این موضوع مشکل دارید به‌صورت ساده تر بخش نخست (XML) مانند بدنه و شکل ظاهری خودرو است و بخش دوم (Java) نظیر موتور آن.

در تصویر بالا در سمت راست تصویر یک اکتیویتی ساده Hello World را می‌بینید و درسمت چپ دو فایل که با رنگ قرمز در مسیر درختی اپلیکیشن مشخص شده اند.
فایل MainActivity در واقع بخش بک‌اند و فایل activity_main.xml نیز بخش فرانت‌اند یک اکتیویتی است. به ازاء هر صفحه (یا هر اکتیویتی) که به اپلیکیشن اضافه می‌شود یک عدد فایل جاوا و اکس‌ام‌ال در کنار فایل‌های بالا ایجاد می‌شود.
در ادامه اکتویتی اصلی هر برنامه (Main Activity) و اجزای آن را بررسی می کنیم. سایر صفحات اپلیکیشن نیز دارای اجزای مشابهی خواهند بود.

بخش Front-end اکتیویتی


در خط نخست این فایل زبان XML معرفی می‌شود و در خط دوم نوع چینش المان‌های در صفحه تعیین می‌شود. ما در این مثال از چینش خطی (LinearLayout) استفاده کرده‌ایم. چینش خطی به دوگونه‌ی افقی و عمودی می‌تواند استفاده شود. برای نمونه ما چینش عمودی را به کار گرفته‌ایم.

تمام مشخصات مربوط به چینش کلی اکتیویتی باید درون تگ

نوشته شود. بعد از این تگ Viewها و المان‌هایی که در صفحه نیاز داریم (نظیر کادر نمایش دهنده یا ورود متن، اسلایدر و … ) را قرار می‌دهیم.
در این اکتیویتی ما از یک TextView که وظیفه‌ی آن نمایش متن به کاربر است استفاده می‌کنیم. متن آن Hello World! است و طول و عرض این کادر را برابر فضایی که اشغال می‌کند قرار داده‌ایم. لزومی ندارد ما یک متن ایستا به TextView معرفی کنیم بلکه می‌توانیم مقدار آن را از طریق برنامه‌نویسی و در فایل Java تغییر دهیم.

با انواع چینش‌ها و چینش‌های تودرتو در یک آموزش تخصصی دیگر در خدمت‌ شما خواهیم بود

بخش Back-end اکتیویتی

همانطور که گفته شد Back-end یک اکتویتی در فایل جاوای همنام آن اکتیویتی انجام می‌شود.
خط نخست نام پکیج برنامه است که در هنگام ایجاد پروژه آن را وارد کرده‌ایم. این خط در تمام فایل‌های جاوای دیگر اکتیویتی ها و در خط نخست آنها وجود خواهد داشت.
ما در هر اکتیویتی از کلاس‌ها و کتابخانه‌های مختلفی استفاده می کنیم. برخی از این کلاس‌ها (مانند همین مثال) به صورت پیشفرض به اکتیویتی import شده و برخی کلاس‌های دیگر در ادامه و بنا به نیاز ما وارد خواهند شد.

بخش جاوای هر فایل اکتیویتی در واقع خود یک کلاس است که همنام با فایل جاوا است.
در این مثال ما یک اکتیویتی MainActivity داریم که دارای دو فایل activity_main.xml و MainActivity.java است و درون فایل جاوا، یک کلاس همنام با این فایل یعنی کلاس MainActivity قرار دارد.

این کلاس از کلاس مادرِ AppCompatActivity مشتق شده است. با بحث‌های کلاس‌ها، کلاس مادر و ارث‌بری در آموزش‌های دیگر در خدمت شما هستیم.

درون هر کلاس یک یا چند متد قرار دارد که به کمک آن‌ها کلاس فعالیت خود را انجام می‌دهد. در کلاس مادر AppCompatActivity یک متد با نام onCreate قرار دارد که وظیفه‌ی آن چگونگی اجرای اکتیویتی در آغاز کار است. درون هر متد می‌تواند متدهای دیگری فراخوانی شود، این متدها می‌تواند درون همین کلاس ایجاد شده باشد یا از کلاس مادر (در این مثال AppCompatActivity) فراخوانی شود.

در کلاس MainActivity ما این متد را بازنویسی (@Override) می‌کنیم.
متد super.onCreate(savedInstanceState); با پاس دادن مقدار R.layout.activity_main به متد setContentView() در واقع فایل فرانت‌اند این اکتیویتی
( Activity_main.xml ) معرفی و فراخوانی می‌شود.
تمامی کدها و فراخوانی‌های موردنیازمان را می توانیم داخل آکلاد متد onCreate اضافه کنیم.
همچنین پس از متد onCreate می‌توانیم متدهای دیگری اضافه کنیم و تنها لازم است برای اجرا، آن‌ها را داخل متد onCreate فراخوانی کنیم.

در خط 15 متد جدید ایجاد شده و در خط 12 این متد درون متد onCreate که وظیفه‌ی اجرای اکتیویتی در لحظه‌ی آغاز را برعهده دارد، فراخوانی می‌شود.