. ---- 现在开始 所以,我们首要问题是:什么是 ViewModelProvider.Factory ?...所以,当我们在构造方法添加参数时, ViewModelProvider.Factory 的内部无法实例化 ViewModel 对象,因为 ViewModelProvider.Factory 调用主构造方法创建...所以,为什么我们需要 ViewModelProvider.Factory ?...什么时候不应该使用 ViewModelProvider.Factory 如果你的 ViewModel 没有依赖项,这时你就不需要去自己创建 ViewModelProvider.Factory。...总结 ViewModelProvider.Factory 负责帮你创建 ViewModel 实例。
我们需要借助ViewModelProvider.Factory来实现传参,新建Main3ActivityViewModelFactor继承自 ViewModelProvider.Factory,重写其onCreate...方法,如下所示: public class Main3ActivityViewModelFactory implements ViewModelProvider.Factory { @NonNull
mFactory = factory; mViewModelStore = store; } ViewModelProvider 里面包括两部分: factory ViewModelProvider.Factory...getDefaultViewModelProviderFactory() : NewInstanceFactory.getInstance() // Activity @NonNull @Override public ViewModelProvider.Factory...} return mDefaultFactory; } // Fragment @NonNull @Override public ViewModelProvider.Factory
class DataViewModel(val id: Int) : ViewModel() 我们可以参考ViewModelProvider.Factory的实现,创建自定义的ViewModelProvider.Factory...class DataFactory(val id: Int) : ViewModelProvider.Factory { override fun ( private val factory: () -> VM, ) : ViewModelProvider.Factory
result } } fun getData(): LiveData { return data } } 使用Factory ViewModelProvider.Factory...class MyViewModelFactory(private val repository: MyRepository) : ViewModelProvider.Factory { override
ViewModelProvider(activity) } @MainThread @JvmStatic fun of(activity: FragmentActivity, factory: ViewModelProvider.Factory...ViewModelProvider(fragment) } @MainThread @JvmStatic fun of(fragment: Fragment, factory: ViewModelProvider.Factory
ViewModelBuilderModule { @Binds abstract fun bindViewModelFactory(factory: ViewModelFactory): ViewModelProvider.Factory...constructor(private val creators: @JvmSuppressWildcards Map, Provider>) : ViewModelProvider.Factory...() { protected lateinit var viewDataBinding: V @Inject lateinit var viewModelFactory: ViewModelProvider.Factory
package-summary#asflow Activity / Fragment 和 ViewModel 要构造一个 ViewModel,需要扩展 ViewModel 类,如果 ViewModel 有其他依赖,还需要实现 ViewModelProvider.Factory...ViewModels(factory): ViewMode https://developer.android.google.cn/reference/androidx/lifecycle/ViewModel ViewModelProvider.Factory...https://developer.android.google.cn/reference/androidx/lifecycle/ViewModelProvider.Factory viewModels
MainViewModelFactory()).get(MainViewModel::class.java) // ViewModel 工厂 class MainViewModelFactory( ) : ViewModelProvider.Factory...// ViewModel 的存储容器 private ViewModelStore mViewModelStore; // ViewModel 的创建工厂 private ViewModelProvider.Factory...KClass, private val storeProducer: () -> ViewModelStore, private val factoryProducer: () -> ViewModelProvider.Factory...LifecycleOwner, ViewModelStoreOwner ... { private ViewModelStore mViewModelStore; private ViewModelProvider.Factory...LifecycleOwner, ViewModelStoreOwner ... { private ViewModelStore mViewModelStore; private ViewModelProvider.Factory
fun getModel(): Class /** 当需要给viewModel传参时,返回ViewModel的工厂*/ fun getModelFactory(): ViewModelProvider.Factory...getModel() 返回 BaseViewModel 的子类 Class,而因为 ViewModel 初始化的特殊性,他是由 Fragemnt 或者 Activity 创建并且保管的,传参数需要通过实现 ViewModelProvider.Factory
让我们先看下范例中的实现: public class ViewModelFactory implements ViewModelProvider.Factory { private final...ViewModelFactory(UserDataSource dataSource) { mDataSource = dataSource; } // 你需要通过 ViewModelProvider.Factory...throw new IllegalArgumentException("Unknown ViewModel class"); } } ViewModelFactory 继承自 ViewModelProvider.Factory...如果还不熟悉 ViewModelFactory 有关内容的,可以看下这篇:ViewModel 和 ViewModelProvider.Factory:ViewModel 的创建者 Injection 关于
通过使用 @HiltViewModel,Hilt 为您创建了正确的 ViewModelProvider.Factory,正因如此,被 @AndroidEntryPoint 注解的 Activity 和
fun ComponentActivity.viewModels( noinline factoryProducer: (() -> ViewModelProvider.Factory...public inline fun Fragment.viewModels( noinline factoryProducer: (() -> ViewModelProvider.Factory
super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ViewModelProvider.Factory
}); break; } } } public class MyViewModelFactory implements ViewModelProvider.Factory
相关文章 ---- 每个人都要学的图片压缩终极奥义,有效解决 Android 程序 OOM Android 让你的 Room 搭上 RxJava 的顺风车 从重复的代码中解脱出来 ViewModel 和 ViewModelProvider.Factory
MyViewModel::class.java) //默认实现反射创建ViewModel实例 二,创建实例过程自定义返回ViewModel实例即可 ViewModelProvider(this,object :ViewModelProvider.Factory
class FragmentManagerViewModel extends ViewModel { //创建FragmentVM的工厂 private static final ViewModelProvider.Factory...FACTORY = new ViewModelProvider.Factory() { @NonNull @Override @SuppressWarnings
Activity / Fragment 和 ViewModel 要构造一个 ViewModel,需要扩展 ViewModel 类,如果 ViewModel 有其他依赖,还需要实现 ViewModelProvider.Factory
ViewMdoel的工厂,用来创建ViewMdoel 这样做的好处在于可随便传递参数等 class ViewModelFactory(private val apiHelper: ApiHelper) : ViewModelProvider.Factory
领取专属 10元无门槛券
手把手带您无忧上云