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

با احترام

 

متد onCreate() ی که در کلاس MainActivity ی پیاده سازی میشه همگی میدونیم که درنهایت نمونه ای از کلاس Context هست و اینکه همین متد onCreate() رو داریم درون  کلاس MyFragment مون Override میکنیم که کلاس Fragment رو extends کرده .

سئوال:

1.      اگر کلاس Fragment نمونه ای از کلاس Context هست پس چه نیازی به Inflate کردن context برای دستیابی به Layout مربوطه در متد onCreateView برای الحاق Layout مورد نظر به فرگمنت هستیم؟

2.      اگر کلاس Fragment نمونه ای از Context نیست پس فرق این متد onCreate() که اینجا از کلاس Fragment مون Override میشه با متد onCreate() موجود در MainActivity چیه که از کلاس Context پیاده سازی میشه؟

با سلام و احترام

در متد onCreate همونطور که از اسمش مشخصه یعنی فرایند ساختن آن فرگمنت یا لیوت مربوطه .

و این رو در نظر داشته باشید Context جد:D اکتیویتی و فرگمنت هست بنظرم ریشه سوال کمی غلط به نظر میاد.

ما با عمل inflate کردن میاییم واکتیویتی یا فرگمنت رو وصل میکنیم به xml

پس باز هم شما رو ارجامع میدم به مقاله 

پس تفاوت که ندارد و صرفا تفاوت کوچکی هست که در مقاله توضیح داده شده :

====

با سلام و احترام

?رویداد on Create

اولین رویدادی است که اتفاق میافتد و در آن کارهایی مثل:

- انتصاب فایل XML مربوط به اکتیویتی.

- معرفی View‌ها (findViewById).

- ایجاد و مقداردهی اولیه Global Object ها.

و ...

را انجام میدهیم.

در واقع می‌توان گفت هر کاری که در طول حیات یک اکتیویتی فقط یکبار نیاز است که انجام شود در این رویداد قرار میگیرد.

مثل bind کردن داده‌ها به لیست ، دریافت داده‌ها از اکتیویتی قبلی و ...

انجام عملیات سنگین در این بخش توصیه نمی‌شود چرا که در کندی نمایش اکتیویتی موثر می‌باشد.

=====

? رویداد on Create  در فرگمنت  :

عملکرد این رویداد شبیه به اکتیویتی هاست با این تفاوت که layout فرگمنت‌ها در رویداد OnCreateView تعریف می‌شود.

 

بهترین پاسخ
پوریا شفیعی ۳۱ تیر ۱۳۹۹، ۰۶:۰۷

پوریا جان فکر میکنم سئوالم رو بد بیان کردم.

 

ببین برادر متد onCreate() موجود در کلاس MainActivity که از کلاس Context مشتق میشه، دقیقااا با همون شکل و شمایل و پارامتر ورودی داره درون کلاس Fragment هم استفاده میشه برای Create کردن فرگمنتها. 

 

تفاوت مفهوم کارکرد هر دو تا رو میدونم و کاملا متوجه شدم. ولی...

 

سئوالم اینجاست:

وقتی من یه لامبورگینی زرد رنگ تو خونه دارم و شما که همسایم هستی هم یه لامبورگینی زرد رنگ داری. تا اینجا ایرادی نداره. ولی...

وقتی پلاک هر دو تا یکی باشه اونوقت بنظرت عجیب نیست؟ در این شرایط دو حالت بوجود میاد یا یه لامبورگینی زرد رنگ هست که هر دو تا داریم ازش استفاده میکنیم مشترکا خریدیمش(مثل متد onCreate() که فقط درون کلاس Context صدا زده میشه و هر کلاسی اگر Context رو extends کنه میتونه به این متد دسترسی داشته باشه) ویا... 

این متد در دو کلاس مجزا یعنی Context و Fragment بصورت مجزا تعریف شده. اگر این حالت درسته پس چرا همه چیز ظاهر این متد در دو تا کلاس شبیه بهم هست. چه لزومی به اینکار هست خوب Fragment هم بیاد Context رو extends کنه.

 

امیدوارم منظورم رو رسونده باشم.

پژمان آزاد ۳۱ تیر ۱۳۹۹، ۰۸:۰۲