تابستون داره تموم میشه ها، فرصت‌ها محدودن کلی آفر جذاب در کمپین تابستون🔥👇
۰ ثانیه
۰ دقیقه
۰ ساعت
۳ Reza Tavassoli
onAttach
جامعه جاوا (اندروید) ایجاد شده در ۱۳ فروردین ۱۳۹۹

سلام 

من اصلا نفهمیدم که متد 

public void onAttach(@NonNull Context context) {
    super.onAttach(context);
    eventListener = (MydialogEventListener) context;
}

 چه کاری رو انجام میده ؟

 

سلام رضا جان

این متد وقتی فرگمنت به اکتیویتی متصل شد صدا زده میشه

به عبارتی این متد در چرخه فرگمنت‌ها هستش و در چرخه حیات اکتیویتی حضور نداره.

و ما در اون اینترفیسمونو مقداردهی کردیم با 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 هست.

 

ممنون

پژمان آزاد ۰۶ مرداد ۱۳۹۹، ۱۷:۳۸