تابستون داره تموم میشه ها، فرصت‌ها محدودن کلی آفر جذاب در کمپین تابستون🔥👇
۰ ثانیه
۰ دقیقه
۰ ساعت
۲ MohammadJavad Khoshneshin
نداشتن کلاس application
میلاد عزیززاده حل شده توسط میلاد عزیززاده

سلام من کلاس اپلیکیشن ندارم که با name بیام داخل منی فست تعریف کنم که بخوام رویداد رو دریافت کنم.

میخوام از یه فرگمنت به یه فرگمنت دیگه ارسال کنم

 

سوال دوم : چرا زمانی که انوتیشن گذاشتیم و یه متد ایجاد کردیم اون متد رو جایی استفاده نکردیم؟ به صورت خودکار فراخوانی میشه؟

سلام وقت بخیر

کلاس اپلیکیشن از پکیج android.app.Application رو باید import کنید اگه Android Studio نمیشناسه این کلاس رو میتونید یکبار پروژه تونو از منوی Build و Clean Project تمیز کنید و دوباره روی Build و Rebuild Project بزنید در صورتی که بازم نشناخت میتونید Android Studeio تونو یکبار ری استارت کنید این نکته رو هم بگم بهتون که شما میتونید بصورت دستی این پیکج رو import کنید و برای اجرا شدن مشکلی بوجود نمیاد.

شما با Annotation گذاشتن به لایبرری Event Bus میگین که این متد برای دریافت Event‌ها هست و این متد بصورت خودکار توسط این لایبرری call میشه و اون Event بصورت خودکار یعنی توسط لایبرری Event Bus به متد شما پاس داده میشه تا منطق خودتونو پیاده سازی کنید. حالا از کجا متوجه میشه که کدوم Event رو باید به این متد بده از طریق Data Type که داخل متد به عنوان پارامتر متد مشخص کردین اسم این پارامتر مهم نیست فقط Data type مهم هست

میلاد عزیززاده ۲۲ تیر ۱۴۰۰، ۰۸:۵۰

اگه هیچ کلاسی ندارین که کلاس Application رو ارث بری کرده باشه نیازی نیست توی Manifest چیزی اضافه کنید. 
کاربرد کلاس Application اینکه قبل از تمام Activity‌ها و Fragment‌های اپلیکیشن اجرا میشه بنابراین اگر کدی دارین که دوست دارین همچین قابلیتی داشته باشه میتونید داخل این کلاس بنویسید. شما Event رو میتونید از هر جایی post کنید و مشکلی بوجود نمیاد به عنوان مثال میتونید کلاس داخل ویدیو رو که از کلاس Application  ارث بری میکرد رو مثل یک کلاس عادی constructor بسازی و داخل بدنه constructor بیای و Timer رو مقدار دهی کنی با این کار تنها کاری که باید انجام بدی اینکه از جایی که میخوای تایمر کارشو شروع کنه یک Instance ازش بگیری مثلا داخل متد onStart اکتویتی.

بهترین پاسخ
میلاد عزیززاده ۲۲ تیر ۱۴۰۰، ۱۶:۴۸