تبلیغات

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

علاقه‌مند به اشتراک گذاری اطلاعات در هر زمینه‌ای / برنامه‌نویس / مدیر فول کده

پاسخ دهید

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