هدف از متد استاتیک getInstance در فرگمنت چیه؟

سوال

سلام دوستان چرا وقتی که فرگمنت ایجاد میکنیم و برای سازنده ی پیش فرضش آرگومان ورودی  تعیین میکنیم ، اونو به عنوان یه اخطار در نظر میگیره و پیشنهاد میده که متدی newInstance بسازیم.آیا دلیل خاصی داره اینکار؟

 

ممنون میشم راهنمایی بفرمایید.

حل شده 0
Sahand 5 سال 1 پاسخ 412 دیده شده 0

پاسخ ( ۱ )

  1. عرض ادب به دوست عزیز

    علت استفاده از این متد به این منظور هست که شما به هیچ وجه برای سازنده ی پیش فرض آرگومان ورودی تعیین نکنید و از آن برای پاس دادن مقادیر استفاده نکنید.!!! سازنده پیش فرض کاملا باید خالی بمونه

    متد  getInstance دقیقا هدفش اینه که شما به فرگمنت تون مقادیری اگر لازمه پاس بدید.نکته ی مهمی که وجود داره اینه که شما اگر واقعا قصد پاس دادن مقادیر به فرگمنت رو ندارید لازم نیست متد getInstance رو بنویسید!

    دقت کنید که هرزمان از getInstance استفاده میکنید ، برای انتساب مقادیر حتما از Bundle استفاده کنید و مستقیم به متغیر ها و اشیا مقادیر رو انتساب ندید!!!

    علت اینکار چی هست؟

    درجواب باید بگم که اندروید گاهی اوقات ممکنه که فرگمنت شما رو در یکسری از سناریو ها ، دوباره ایجاد کنه (recreate) و اگر شما مقادیر رو با شی باندل پُر نکرده باشید دیگه خبری از اون مقادیر نیست چون سیستم عامل اندروید در زمان دوباره ایجاد کردن فرگمنت شما از سازنده پیش فرض استفاده میکنه که طبق توصیه گوگل هیچ وقت از اون برای پاس دادن مقادیر اولیه به اشیا فرگمنت استفاده نمیکنیم!

     

    پس :
    *متدgetInstance زمانی نوشتنش واجبه که قصد پاس دادن مقادیر داریم(نه همیشه-مگر جهت کدنویسی زیباتر)

    *هر زمان از getInstance استفاده کردیم برای انتساب مقادیر از باندل استفاده میکنیم و در oncreate فرگمنت اون باندل رو parse میکنیم و به آبجکت های فرگمنت انتساب میدیم

     

    موفق و پیروز باشید!

     

     

    بهترین پاسخ

ارسال یک پاسخ