اموزش bundle در اندروید
با سلام .در اموزش های قبلی کار با intent ها را بررسی کردیم و به بخش های مختلف ان اشاره کردیم.در این اموزش میخواهیم در ادامه کار با intent ها به اموزش bundle در اندروید بپردازیم.
احتمالا سوالی که واسه کسانی که اولین باره با باندل اشنا میشوند پیش می اید این است که باندل چیست و به چه درد میخوره؟
خب کمکی که باندل به ما میکنه این است که به وسیله ان میتوانیم داده هارا از اکتیویتی به اکتیوتی دیگر انتقال دهیم.
خب طبق اموزش کار با intent به شکل زیر یک intent برای اتصال دو اکتیویتی ایجاد میکنیم:
1 2 3 | Intent myintent = new Intent(this,activity2.class); myintent.putExtra("myKey", AnyValue); startActivity(myintent); |
خب همه چیز مثل کد های قبلیمونه با این تفاوت که از یک دستور جدید به نام putExtra استفاده کردیم.وظیفه این دستور برداشتن مقداریه که شما مشخص کردین همانطور که میبینید از دو بخش تشکیل شده. بخش اول که در اینجا نوشتیم mykey کلیدیه که شما مشخص میکنید چی باشد و در اکتیویتی دوم با این کلید به مقدارتون اشاره میکنید و ان را فراخوانی میکنید.و بخش دوم مقداریه که میخواهید از این اکتیویتی انتقال بدهیدش.
خب شاید سوال پیش بیاد که پس نقش bundle در اینجا چیست؟خب بخش اصلی کار ما مونده یعنی فراخوانی داده مورد نظر در اکتیویتی دوم.
خب حالا به اکتیویتی دوم میرویم و کد زیر را مینویسیم:
1 | Bundle mybundle = intent.getExtras(); |
خب در اینجا bundle را تعریف کردیم و حالا نوبت گرفتن مقدار هایی است که در اکتیویتی قبل ان را put کردیم:
1 | String str = mybundle.getString("myKey"); |
و تمام.به همین سادگی یک داده را از یک اکتیویتی به اکتیویتی دیگر منتقل کردیم و ان را در یک متغییر ریختیم.توجه داشته باشید در اینجا مقدار استرینگ در نظر گرفته شده و دلیل اینکه نوشتیم getString همینه و در حالت های دیگر این بخش متفاوت است.
امیدوارم از این اموزش هم راضی بوده باشید 🙂
تا اموزش های دیگر بدرود.
خیلی شیک توضیح دادی.ممنون
خواهش میکنم محمد جان
سلام واقعا دمتون گرم ممنونم ازتون.یاعلی علیه السلام
خواهش می کنم موفق باشید.
برای گرفتن intent که از getIntent().getStringExtra(); استفاده می کنیم. می خواستم بدونم فرق این حالت با bundle چیه؟
خیلی ممنون از پست ها و مطالب خوبتون.
اینجا می خوام بدونم فرق getIntent().getStringExtra(); با bundle چیه ؟
تا جایی که بنده میدوم تفاوتی ندارند جز اینکه getIntent().getStringExtra(); مستقیما از اینتنت داده مورد نظر رو میگیره..
با سلام جسارتا کدی که با اون تو اکتیویتی دوم کد باندل رو میزنیم یعنی >
اشکال داره من اینجوری کد رو زدم:
Bundle bundle = this.getIntent().getExtras();
و درست شد!!!!
سلام بستگی دارد شما از چه نسخه Sdk دارید استفاده می کنید و در چه جایی استفاده می کنید اگر در اکتیوتی اصلی باشید (بخش main نیازی به this ندارد) چون در خود main است ولی اگر مثلا در متودی که به روت اکتیویتی دسترسی ندارد باید از this یا حتی getapplicationcontext استفاده کنید موفق باشید.
سلام ببخشید می خواستم بدونم برای اطلاعات بیشتر از یکی یا جوری که تعداد اطلاعات مشخص نباشه باید چی کار کرد؟ و اینکه برای ارسال ارایه از همین روش استفاده میشه یا نه؟
سلام و درود
از Parcelable باید استفاده کنید.
https://programchi.ir/2018/04/27/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-parcelable-%d8%af%d8%b1-%d8%a7%d9%86%d8%af%d8%b1%d9%88%db%8c%d8%af/
موفق باشید.
سلام مرسی از توضیح و سایت خودتون