کار با startActivityForResult در اندروید

متخصصان اندروید

نویسنده : ناصر خالدی

دسته بندی : دسته‌بندی نشده

برچسب ها :

تاریخ انتشار : ۲۵ فروردین ۱۳۹۷

 

نکته : حتما SDK خود را به آخرین نسخه ارتقا بدهید.

مقدمه

درخواست یک داده یا object از یک اکتیویتی یا اپلیکیشن دیگر در اندروید.

در بعضی مواقع لازم می شود تا ما یک در خواستی را از یک اکتیویتی دیگر بکنیم تا یک سری داده را برای ما پردازش یا به ما برگردانند, به همین منظور از تابع startActivityForResult استفاده میکنیم.

 

توضیحات کلی استفاده از setActivityForResult :

برای درخواست از یک اکتیویتی یا اپ دیگر باید در کلاس مربوطه از متد setActivityForResult استفاه بکنید, که دو پارامتر دریافت می کند, اولین پارامتر مربوط به کد درخواست می باشد, که هنگام برگشت درخواست, ما می توانیم با استفاده از آن کد, درخواست خود را از دیگر درخواست هایمان جدا کنیم, چون امکان دارد بیش از یک در خواست در یک کلاس داشته باشیمو باید به این نکته توجه کنید که کد ها باید با یک دیگر فرق بکنند و تا حد ممکن از رقم ۱۰۰ به بعد برای ساخت یک کد درخواست استفاده کنید, پارامتر دوم یک Intent می باشد که در آن ابتدا باید مبدا و مقصد را مشخص کرد و می توان در آن داده های نیز به سمت مقصد ارسال کرد.

برای دریافت داده های بازتاب شده می باید متد onActivityResult را در کلاس خود implement بکنید (برای implement کرد در ویندز می توانید با استفاده از نگه داشتن کلید های ترکیبی ctrl+o لیست متد های قابل وارد کردن را ببنید و در آن متد onActivityResult را انتخاب کنید), این متد سه پارامتر دریافت میکند, پارامتر اول کد نتیجه است که می توان با استفاده از آن فهمید که آیا نتیجه با موفقیت بازتاب شده یا خیر, پارامتر دوم کد درخواست است که در بالا آن را توضیح دادیم, پارامتر سوم هم یک Intent می باشد که تمام اطلاعات مورد نیاز ما در آن می باشد که با استفاده از کلید های مجزای هر درخواست که مربوط به مقصد انجام کار می باشد , می توان داده های خود را استخراج کرد.

خودمان چگونه نتیجه بازتاب کنیم :

برای اینکه بتوانیم اکتیویتی داشته باشیم که بتوانیم نتیجه ای را از آن بازتاب کنیم, باید به این صورت عمل بکنیم که ابتدا برای هر داده ای که می خوایم یک کلید static ایجاد بکنیم, که نام این کلید مربوط به مفهوم داده ای باشد که بازتاب میکنیم, به عنوان مثال می توانید یک کلید به صورت زیر ایجاد کنید :

سر آخر برای باز تاب کردن یک داده باید یه Intent خالی ایجاد بکنیم, و داده های خود را با استفاده از متد putExtra و استفاده از کلید برای نام داده, در آن قرار بدهیم. و برای فهماندن اینکه این Intent همان نتیجه اصلی می باشد باید از متد setResult استفاده بکنیم که دو پارامتر دریافت میکند, اولین پارامتر مربوط به کد نتیجه است که به اکتیویتی درخواست کننده اعلام میکند که آیا نتیجه به درستی انجام شده است یا خیر, برای به درستی اعلام کردن باید RESULT_OK استفاده بکنید که یک عدد قرار دادی می باشد. پارامتر دوم یک Intent می باشد که داده ها را در خود دارد, و این مقدار رو همان Intent که در بالا ساختیم قرار می دهیم. و سر آخر با استفاده از کد finish اکتیویتی را می بندیم تا نتیجه بازتاب شود.

فایل های پروژه : دانلود پروژه         دانلود فایل APKپروژه              دانلود فایل pdf مقاله