Skip to main content

استارت زدن اکتیویتی با intent های صریح

Start activities with explicit intents

در این درس از دوره جامع Android App Development Essential Training، مبانی و جزئیات استفاده از explicit intents برای شروع Activityها به شکلی تخصصی بررسی می‌شود. در این آموزش، با تشریح ساختار explicit intent و نحوه‌ی تعیین دقیق کامپوننت مقصد، مفاهیم انتقال داده با استفاده از متد putExtra و مدیریت navigation در برنامه‌های اندرویدی آشنا می‌شوید. نمونه کدهای ارائه‌شده و توضیحات گام‌به‌گام، دیدگاه‌های عملی و استانداردهای کدنویسی بهینه را در اختیار توسعه‌دهندگان قرار می‌دهد تا بتوانند با بهره‌گیری از تکنیک‌های پیشرفته Android، تجربه کاربری بهبود یافته‌ای را ارائه دهند.

لینک کمکی (official link) – تسلط بر Explicit Intent: راه‌اندازی Activity و انتقال داده در Android

در آموزش قبلی، من یک اکتیویتی دوم که شامل یک کلاس جاوا ساده و یک مجموعه فایل های لایوت بود ساختم و همونطور که از پانل سمت چپ در زیرشاخه فایل های منابع و Layout می بینید اسم یکی اش با activity شروع میشه و اون یکی با content. و دیدید که یکسری کنترلهای بصری در فایل لایوتی که با content شروع میشه، اضافه کردم که یک تصویر و دو تا text view رو نمایش میدادن، و سفارشی شون کردم. حالا میخوام بهتون نشون بدم که چطور میشه از اکتیویتی اصلی به اکتیویتی جدید که با نام About در ویدئوی آموزشی قبلی سفارشیش کردم، بریم.

من این کد رو اینجا مینویسم در main activity در متد on options items selected برای زمانی که کاربر این آیتم خاص از منو رو انتخاب کنه. درواقع میخوام طوری تنظیمش کنم که وقتی کاربر آیتم رو بعد از مشاهده اش در منوها فشار داد وارد اکتیویتی جدید بشه.

کد مربوط به پیام رو کامنت میکنم چون الان میخوام یک عملیات خاص رفتن به اکتیویتی About رو تعریف کنم. برای رفتن از یک اکتیویتی به اکتیویتی دیگه در یک برنامه مجزا، از کلاس Intent استفاده میشه. من یک نمونه از این کلاس Intent ایجاد میکنم، میخام اینکار رو طبق این لیست از پکیج android .content ایجاد کنم. و یک اسم ساده intent واسش میذارم و با متد سازنده اش معرفی اش میکنم. خب برای اینکار کافی هست تایپ کنم new Intent، همونطور که می بینید این سازنده شامل چند نسخه هستش.

من از لیست اونی رو که دو تا آرگومان داره رو بکار میبرم. همونی که یک محتوی یا context و یک کلاس داره. این کلاس همون محتویات کلاس اکتیویتی ای هستش که به تازگی تعریفش کردم. در واقع همون کلاس ثانویه ای هست که قرار هست واردش بشیم. برای تعریف context هم کلمه this رو وارد میکنم یعنی همین اکیتیویتی جاری. و اگه بخام واضح تر بگم، کلمه this به این معنی هست که کلاس اکتیویتی اولیه همین کلاس باشه و بعد برای کلاس ثانویه، عبارت AboutActivity .class رو وارد میکنم. توجه کنید که برای کلاس ثانویه ما یک نمونه از اون کلاس رو وارد نمیکنیم بلکه خیلی ساده تر تعریف همون کلاس رو به عنوان ورودی بهش میدیم و بعد فریم وورک برنامه اون کلاس رو تعریف و نمونه سازی میکنه و صفحه نمایشش رو بالا میاره.

بعد باید متدی رو برای اکتیویتی جاری با نام start Activity فراخونی کنم و شی intent رو بهش بدم. این همه اون چیزی بود که باید انجام میدادیم. حالا این intent مسئول باز شدن اکتیویتی جدید هست. از کد جدیدم اجرا میگیرم. وقتی برنامه میاد روی صفحه به آپشن منو میرم و About رو انتخاب میکنم و وارد About Activity میشیم. مثل قبل کاربر میتونه متن رو اسکرول کنه و همش رو ببینه و اما الان کاربرامون میخان به اکتیویتی parent یا اصلی برگردن.

کاربران میتونن عمل برگشت به اکتیویتی parent رو به یکی از دو روشی که بهتون میگم، انجام بدن. اگه دقت کنید در اکشن بار یک آیکن جدید بالا اومده و الان اونو داریم. این درواقع یک پیکان به سمت چپ هستش، و توسط فریم وورک برنامه ساخته شده. این آیکن ساخته شده تا وقتی انتخابش میکنید به اکتیویتی parent برگردید. من اینکار رو یکبار دیگه انجام میدم دوباره به About Activity میرم، و اینبار دکمه بک دستگاه رو فشار میدم و دقیقا همون اتفاق قبلی افتاد. حالا با فشار مجدد دکمه بک برمیگردم به صفحه لانچرم و الان میخام دوباره آیکن لانچر برنامه رو انتخاب کنم تا مجدد وارد صفحه home برنامه H+ Sport بشه.

یکبار دیگه به About Activity میرم و این دفعه دکمه home دستگاه رو فشار میدم. این دفعه برنگشت رو اکتیویتی قبلی، و می بینید که همه چیز خوب کار میکنه و حالا وقتی آیکن لانچر برنامه رو میزنم، فریم وورک برنامه یادش هست که آخرین اکتیویتی این برنامه که باز بوده کدوم بوده و همون رو بهمون نمایش میده. در نهایت، بیایید کمی راجع به استفاده از دکمه بک یا آیکن پیکان اکشن بار صحبت کنیم. وقتی من اکتیویتی جدیدم رو ساختم، اون به صورت اتوماتیک در مانیفست برنامه ثبت شد.

یک عنصر اکتیویتی جدید درست در اینجا ثبت شده. که ویژگی name اش همون نام کلاس اکتیویتیه من هست. با پیشوند دات که یعنی این کلاس عضوی از پکیج پیش فرض app هستش. اگه خواستید میتونید از پکیج explicit هم استفاده کنید. Label یک رشته هستش و مقدار پیش فرضش نام واقعی کلاس هست. پس من دابل کلیک میکنم تا string resource اش نمایش داده بشه و بعد ctrl +click رو انجام میدم تا بره سراغ فایل strings.xml.

و این رشته رو از About Activity به About H+ Sport تغییر میدم و یکبار دیگه برنامه رو اجرا میکنم. یکبار دیگه به اکتیویتیAbout  میرم و یک رشته جدید About در بالای صفحه در اکشن بار میبینیم. به مانیفست برمیگردم، میبینید که یک عنصر به نام meta-data اینجا وجود داره. که دو تا ویژگی داره با نام های name و value. Value روی کلاس Main Activity تنظیم شده. این برای این هست که در ورژن های اخیر اندروید آیکن پیکان به سمت چپ، اون بالا نمایش داده بشه.

ولی در نسخه های قدیمی تر اندروید، باید چند خط  کد در کلاس About Activity برای اینکار اضافه کنید. این همون کد هست. فراخونی متد set DisplayHomeAsUpEnabled و دادن مقدار true به اون. با اضافه کردن عنصر meta-data در فایل مانیفست اندروید و نوشتن این کد جاوا در کلاس About Activity، باعث میشید که اون آیکن در همه نسخه های پشتیبان اندروید نمایش داده بشه.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دوره ها
درس ها
Tha PMIS
طهاکو من
0