این متد وقتی فرگمنت به اکتیویتی متصل شد صدا زده میشه
به عبارتی این متد در چرخه فرگمنتها هستش و در چرخه حیات اکتیویتی حضور نداره.
و ما در اون اینترفیسمونو مقداردهی کردیم با context و سپس کست کردیم(عمل پولیمورفیسم).
پوریا شفیعی۱۳ فروردین ۱۳۹۹، ۲۰:۳۰
در چرخه حیات (Life Cycle) فرگمنت، متدی هست به اسم onAttach، این متد زمانی صدا زده میشه که فرگمنت به اکتیویتی متصل بشه، از طرف دیگه این متد پارامتری داره که در واقع Context همون اکتیویتی هست که به فرگمنت متصل شده. حالا اگر ما اینترفیس رو توسط اکتیویتی implement کرده باشیم، میتونیم داخل متد onAttach بگیم پارامتر Context همون interface ما هست که implement شده (بر اساس قاعده Polymorphism).
سعید شاهینی۱۴ فروردین ۱۳۹۹، ۰۸:۵۸
درود وقت بخیر
با تعاریف شما در بالا
1.
آیا میشه بجای کد زیر :
eventListener= (MyDialogeventListener) context;
نوشت:
eventListener= new MainActivity();
چون من اینکارو کردم و کامپایلر اروری نداد.
2.
اگر context همون روت لی اوت اکتیوتی ماست دیگه چه نیازی به Cast کردنش داریم چون اونطرف MainActivity اینترفیس MyDialogeventListener رو پیاده سازی کرده بنابراین کامپایلر باید بتونه اتوماتیک با مقداردهی کردن eventListener با نمونه context متوجه بشه که این context همون نمونه MainActivity هست.