در مباحث قبل با Intent و نحوه ارسال پیام توسط آن آشنا شدیم.حالا می خواهیم تمامی مباحث رو با یک مثال عملی پیاده سازی کنیم تا به خوبی نحوه استفاده از این قابلیت رو فرا بگیرید.
لینک آموزش های قبلی مربوط به Intent :
۱- آشنایی با Intent
۲- پرش از یک اکتیوتی به اکتیویتی دیگر به وسیله Intent
۳- ارسال داده های دلخواه از یک اکتیوتی به اکیتیوتی دیگر به وسیله Intent

می خواهیم اپلیکیشنی بسازیم که در آن کاربر داده های دلخواه خودش رو در یک اکتیوتی وارد میکنه (مثلا نام و نام خانوادگی ) و بر روی دکمه ارسال کلیک میکنه سپس در اکتیوتی دوم این داده ها دریافت شده و نمایش داده می شوند.(در ذیل نمای نهایی  اپلیکیشن را مشاهده می کنید)

 

یک پروژه جدید بسازید
نام اپلیکیشن : SendDate2NewActivity
نام دامین اپلیکیشن :apk.manoandroid.com
سطح API اپلیکیشن : ۱۵
نوع اکتیوتی : Empty Activity
نام اکتیوتی : پیشفرض (MainActivity)
نام لیوت : پیش فرض (activity_main)

 

حال یک اکتیویتی جدید ایجاد کنید (برای مطالعه نحوه چگونگی ایجاد اکتیوتی جدید این پست را مطالعه نمایید)
نام اکتیویتی :ReciverActivity
نام لیوت متعلق به اکتیوتی:activity_reciver.xml

 

طراحی لیوت activity_main
دو Edit Text یکی برای وارد کردن نام و دیگر برای وارد کردن نام خانوادگی ایجاد کرده و یک دکمه هم برای اینکه با کلیک کردن روی اون اطلاعات وارد شده  به اکتیوتی دوم فرستاده بشن . در زیر کدهای مربوط به  لیوت رو مشاهده می کنید.

توضیح کدهای بالا :

خط ۱۲ تا ۱۹ : این خطوط مربوط به تعریف Edit Text اول که مربوط به وارد کردن نام کاربر می باشد هست.در خط پانزدهم Id این ویوو را برابر edtFname قرار دادیم و در خط نوزدهم از خاصیت hint برای قرار دادن یک متن راهنما درون این المنت استفاده کردیم تا کاربر بدونه که باید نام خودش رو در این قسمت وارد کنه.
خط ۲۱ تا ۲۸ : مربوط به تعریف المنت Edit text دوم می باشد که از آن جهت دریافت نام خانوادگی فرد استفاده میکنیم.
خط ۳۰ تا ۴۰ : این خطوط مربوط به تعریف ویوو Button می باشد.در خط ۳۴ آی دی این المنت را برابر btnSend و در خط ۴۰ خاصیت onClick آن را برابر sender قرار دادیم.(sender نام تابعی می باشد که آن را در اکتیویتی mainActivity تعریف خواهیم کرد.از آن جا که  میخواهیم موقعی که کاربر روی دکمه کلیک کرد این تابع اجرا شود پس نام این تابع را به خاصیت onClick دکمه انتساب دادیم)

 

نوشتن کدهای mainActivity
در این فایل تابعی با نام sender  بمنظور دریافت اطلاعات وارد شده توسط کاربر در اکتیویتی اول و فرستادن اون ها به اکتیوتی دوم ایجاد می کنیم، دو ارجاع به عناصر editText موجود در لیوت activity_main می دهیم (بوسیله findViewById ) و در نهایت مقادیر وارد شده را دریافت و توسط Intent به اکتیویتی ReciverActivity می فرستیم.در ذیل کدهای اکتیوتی mainActivity را مشاهده می کنید.

توضیح کدهای بالا :
خط ۱۹ و ۲۰ : در این خط به وسیله تابع findViewById دو ارجاع به المنت های Edittext موجود در لیوت داده ایم و آن ها را در edtname و edtLname ذخیره کرده ایم . از این به بعد هر تغییری رو که بخواهیم از داخل اکتیوییتی بر سر این المنت های موجود در لیوت بیاریم متدهای مربوطه رو روی این دو ( edtname و edtLname) فراخوانی می کنیم.
خط ۲۱ : در این خط به وسیله فراخوانی متدهای ()getText().toString  روی edtFname مقدار وارد شده در المنت  مربوطه (نام کاربر) را دریافت و به نوع رشته ای تبدیل کرده و در نهایت در یک متغیر رشته ای با نام Fname  ذخیره میکنیم.
خط ۲۲ : در این خط به وسیله فراخوانی متدهای ()getText().toString  روی edtLname نام خانوادگی وارد شده در المنت  مربوطه را دریافت و به نوع رشته ای تبدیل کرده و در نهایت در یک متغیر رشته ای با نام های Lname  ذخیره میکنیم.

خط ۲۴ : در این خط یک Intent با نام intent ایجاد کرده و مقصد آن را اکتیوتی ReciverActivity مشخص کرده ایم.
خط ۲۵ : در این خط بوسیله بکار بردن دستور putExtra نام وارد شده توسط کاربر (مقداری که در Fname دخیره کردیم) را با کلید First_name درون intent قرار دادیم.
خط  ۲۶ : در این خط بوسیله بکار بردن دستور putExtra نام  خانوادگی وارد شده توسط کاربر (مقداری که در Lname دخیره کردیم) را با کلید Last_name درون intent قرار دادیم.
حط ۲۴ : در این خط بوسیله متد startActivity  اینتنت ساخته شده را به اندروید فرستادیم .(اندروید این intent را دریافت کرده و در صورت اوکی بودن شرایط اکتیوتی ReciverActivity را اجرا میکنه.)

 

طراحی لیوت activity_reciver
در این فایل یک TextView ساده جهت نمایش عبارت “اطلاعات دریافت شده : ” و یک TextView دیگر برای این که اطلاعات Intent دریافت شده را درآن نمایش دهیم ایجاد می کنیم.(در ذیل کدهای مریوط به این فایل را مشاهده می کنید)

توضیح کدهای بالا هم خیلی ساده اس ، دو تا TextView ایجاد کرده ایم
اولین TextView عبارت ثابت ” اطلاعات دریافت شده : ” را نمایش میده .
دومین TextView مقدار پیشفرض  “… ” را برای خاصیت Text اون در نظرگرفتیم.بعد از اجرا شده اکتیویتی دوم توسط Intent ، داده ای اضافی موجود در Intent واکشی شده و به جای این سه نقطه قرار میگیرند.(در  ReciverActivity کدهای مربوط به این کار را می نویسم)

نوشتن کدهای مربوط به ReciverActivity

توضیح کدهای بالا :
عملیات دریافت اطلاعات موجود در Intent و نمایش دادن اونها در Text View را در خطوط ۱۵ تا ۲۰ کدنویسی کرده ایم. (همان طور که مشاهده می کنید این کدها در متد onCreate قرار داده شده اند.)
خط ۱۵ : در این خط با فراخوانی تابع getIntent() ، اینتنی که باعث اجرا شدن اکتیوتی ما شده است را برگردانده ایم و آن را در RecivedIntent ذخیره کرده ایم.از این به بعد با فراخوانی متدهای موردنیاز روی RecivedIntent داده های اضافی دلخواه موجود در Intent را واکشی میکنیم.
خط ۱۶ : در این خط با صدازدن متد (“First_name”)getStringExtra مقدار مربوط به کلید “First_name ” موجود در Intent را برگردانده و در متغیری رشته ای به نام Firstname ذخیره کرده ایم.(دریافت نام)
خط ۱۷ : در این خط با صدازدن متد (“Last_name”)getStringExtra مقدار مربوط به کلید “Last_name ” موجود در Intent را برگردانده و در متغیری رشته ای به نام Lastname ذخیره کرده ایم.(دریافت نام خانوادگی)
خط ۱۹ : در این خط یک اشاره به TextView موجود در لیوت ایجاد کرده و آن را در txtMoniitor ذخیره کرده ایم.
خط ۲۰ : در این خط با فراخوانی تابع setText روی txtMonitor مقادیر نام و نام خانوادگی موجود در دو متغیر FirstName و LastName را روی txtView قرار داده داده ایم.

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

در صورتی که هرگونه سول سا پیشنهادی داشتید ، از طریق بخش نظرات با ما در میان بگذارید
من و اندرویدی باشید