تابستون داره تموم میشه ها، فرصت‌ها محدودن کلی آفر جذاب در کمپین تابستون🔥👇
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ Hamidreza Karimi
pass context from view model factory
پوریا شفیعی حل شده توسط پوریا شفیعی

با سلام خدمت استاد و دوستان گل

سوالم این هستش که ما در گذشته که کلاس viewModel رو خودمون میساختیم و از viewModelProvider استفاده نمیکردیم ، اگر لازم بود که کلاسی مانند appDatabase رو به viewModel پاس بدیم و کلاس appDatabase نیاز به context داشت ، ما میتونستیم با استفاده از اکتیویتی یا فرگمنت ، context رو پاس بدیم

اما اکنون که از اینترفیس viewModelProvider.Factory برای پاس دادن پارامترهای کانستراکتور استفاده میکنیم ، راه استانداردی وجود داره که ما بتونیم context رو پاس بدیم (البته بدون استفاده از لایبری‌های Dagger یا Koin) 

سلام وقت بخیر 

برای اینکار میتونین بجای اینکه از ViewModel ارث بری کنید از AndroidViewModel ارث بری کنید .

و application.getApplicationContext(); یک اینتنس از context به شما میدهد

موفق باشید.

نمونه کد:

public class NameViewModel extends AndroidViewModel {
    public NameViewModel(@NonNull Application application) {
        super(application);
        application.getApplicationContext();
    }
}

 

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