تفاوت بنیادین متد onCreate() در اکتیویتی و فرگمنت

پرسیده شده
فعالیت 1396 روز پیش
دیده شده 1023 بار
0

با احترام

 

متد 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 پیاده سازی میشه؟

فایل پیوست

پژمان آزاد
پژمان آزاد

30 تیر 99

3
حذف شده

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

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

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

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

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

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

====

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

?رویداد on Create

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

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

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

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

و ...

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

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

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

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

=====

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

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

 

فایل پیوست

پوریا شفیعی

توسط

پوریا شفیعی

31 تیر 99

1
حذف شده

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

 

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

 

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

 

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

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

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

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

 

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

فایل پیوست

پژمان آزاد

توسط

پژمان آزاد

31 تیر 99

حذف شده
اگر فرگمنت بیاد و Contect رو به صورت مستقیم extend کنه اون وقت به ی سری توابع توی فرگمنت دسترسی نداریم پس ما باید کلاسی رو ارث بری کنیم که تمام توابع رو در خودش داشته باشه لامنبورگیتی و پلاک عالی بود D
پوریا شفیعی

31 تیر 99

حذف شده
خخخخ. خوشحالم که حال کردی. امیدوارم تصور لامبورگینی زرد رنگ حالتو بهتر کرده باشه.
پژمان آزاد

31 تیر 99