تبلیغات

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

نوشته شده توسط هادی اکبرزاده

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


همانطور که در پست Intent چیست گفتیم، از Intent ها برای انتقال داده‌ها در نقش پستچی در موارد مختلفی استفاده می‌شود! همچنین در پست یاد شده، به نحوه‌ی ارسال داده‌های ساده (عددی، رشته و …) از یک اکتیویتی به اکتیویتی دیگر اشاره کردیم؛ ولی به نحوه‌ی ارسال یک آبجکت نپرداختیم!

البته ممکن است شما با استفاده از روش‌هایی مثل static کردن یک فیلد، در اکتیویتی‌های مختلفی به آن دسترسی داشته باشید؛ ولی خب این روش در هر موردی صحیح نیست!

نحوه انجام کار

فرض کنید قصد داریم تا از FuLLKadeActivity به TestActivity برویم! و در این‌جا آبجکتی به نام note در اختیار داریم. شما همانند روش ساده، با استفاده از متد putExtra می‌توانید آبجکت را در intent قرار دهید:

همانطور که می‌دانید، در ورودی اول متد putExtra، یک کلید (نام دلخواه) برای دسترسی به مقدار وارد شده در اکتیویتی دوم می‌نویسیم و در ورودی دوم این متد نیز مقدار را قرار می‌‎دهیم!
حالا چیزی که اتفاق می‌افتد این است که کامپایلر، از این خط از کد خطا می‌گیرد و به شما می‌گوید که نمی‌توانید این مقدار را ارسال کنید!

چاره‌ی کار شما این است که به کلاس آجکت مورد نظر رفته و اینترفیس Serializable را روی آن پیاده سازی کنید! این اینترفیس متدی ندارد و تنها خاصیت سریالایز شدن را برای کلاس شما فراهم می‌آورد! این مورد را به صورت کلیشه‌ای یاد بگیرید.

حالا ارور از بین می‌رود! ولی یک چیز دیگر باقی می‌ماند و آن نحوه‌ی گرفتن مقدار در اکتیویتی دوم است!
آیا این کار به روشی که قبلا گفته شده است صورت می‌گیرد؟! یعنی به صورت زیر:

با نوشتن کد بالا کامپایلر از شما خطا می‌گیرد! بنابراین باید به روش دیگری عمل کنیم!
ما آبجکت را به صورت زیر دریافت می‌کنیم:

پس از متد getSerializableExtra در خود intent دریافت شده استفاده می‌کنیم و کاری با Extras یا همان bundle نداریم!
توجه داشته باشید که اگر مقداری ارسال نشده باشد، null برگردانده می‌شود و پس در کد بالا اگر null برگردانده شود، مقدار note برابر null خواهد بود!

طبیعتا به این شیوه می‌توانید برای سرویس‌ها نیز آبجکتی را ارسال و دریافت کنید.

 

 

 

تبلیغات
0
کانال تلگرام فول کده

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

هادی اکبرزاده

[ مدیر فول کده ]

دانشجوی ارشد شبیه ساز هوشمند و مدیر فول کده

پاسخ دهید

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

نظرات ثبت شده بدون دیدگاه