5

Ben dagger2 kütüphanesi kullanıyorum. projemi çalıştırmaya çalıştığım zaman, örnek sınıfın örneğini oluşturamayacağını söylüyor.Özel bir örnek oluşturamıyor ViewModel

Ben Bir instance'a oluşturmaya çalışıyorum

ana faaliyet

((MovieApplication) getApplication()).getAppComponent().inject(this); 
    mViewModel = ViewModelProviders.of(this).get(MoviesDataViewModel.class); 

Benim fabrika sınıfı

public class ViewModelFactory implements ViewModelProvider.Factory { 
private MoviesDataViewModel mViewModel; 

@Inject 
public ViewModelFactory(MoviesDataViewModel viewModel) { 
    this.mViewModel = viewModel; 
} 

@Override 
public <T extends ViewModel> T create(Class<T> modelClass) { 
    if (modelClass.isAssignableFrom(MoviesDataViewModel.class)) { 
     return (T) mViewModel; 
    } 
    throw new IllegalArgumentException("Unknown class name"); 
} 

Benim günlük

Caused by: java.lang.RuntimeException: Cannot create an instance of class com.moviedata.viewmodel.MoviesDataViewModel 
                   at android.arch.lifecycle.ViewModelProvider$NewInstanceFactory.create(ViewModelProvider.java:145) 
                   at android.arch.lifecycle.ViewModelProviders$DefaultFactory.create(ViewModelProviders.java:143) 
                   at android.arch.lifecycle.ViewModelProvider.get(ViewModelProvider.java:128) 
                   at android.arch.lifecycle.ViewModelProvider.get(ViewModelProvider.java:96) 
                   at com.moviedata.ui.MainActivity.onCreate(MainActivity.java:28) 
                   at android.app.Activity.performCreate(Activity.java:6321) 
                   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108) 
                   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2426) 
                   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2535)  
                   at android.app.ActivityThread.access$1100(ActivityThread.java:154)  
                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1396)  
                   at android.os.Handler.dispatchMessage(Handler.java:102)  
                   at android.os.Looper.loop(Looper.java:148)  
                   at android.app.ActivityThread.main(ActivityThread.java:5582)  
                   at java.lang.reflect.Method.invoke(Native Method)  
                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  
                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  
                  Caused by: java.lang.InstantiationException: java.lang.Class<com.moviedata.viewmodel.MoviesDataViewModel> has no zero argument constructor 
                   at java.lang.Class.newInstance(Native Method) 

cevap

3

yerine:

mViewModel = ViewModelProviders.of(this).get(MoviesDataViewModel.class); 

gerçekleştirin:

mViewModel = ViewModelProviders.of(this, viewModelFactory).get(MoviesDataViewModel.class); 
+0

Thanku @azizbekian .. –