让我们在不使用 ViewModelProvider.Factory 的情况下,试着创建一个 ViewModel 看看: 在活动中实例化: 有没有人注意到:当我们使用 ViewModelProviders...在活动中实例化 MyViewModel 时,从未没用过 MyViewModel 的构造方法,而都是使用 ViewModelProviders 这个类中的方法。...ViewModelProviders 在内部为我们管理并调用 ViewModel 的主构造函数,创建viewmodel的实例并将该实例并返回。...ViewModelProviders 的 of() 方法,在内部创建了默认的 ViewModelProvider.Factory ,从而实现了 ViewModel 的无参创建。...ViewModelProviders.Factory 接口是负责实例化 ViewModels 对象的启动装置。这意味着你需要自己写实例化 ViewModel 对象的方法。
value = key } } //MainActivity.kt val keywordModel=ViewModelProviders.of(this).get(KeywordModel...keywordModel.setKeyWord("siri") //赋值 在fragment 获取值 //ExampleFragment.kt val keywordModel = ViewModelProviders.of...ViewModelProviders 的 of 方法可以传入 fragment 或者是 activity,就是说你可以在fragment 或者 activity 创建 viewmodel,而这个 viewmodel...//ViewModelProviders.java public static ViewModelProvider of(@NonNull FragmentActivity activity) {...mNotCommittedFragmentHolders.put(parentFragment, holder); return holder; } 小总结 ViewModel 是从 ViewModelproviders
用法简介 ViewModel一般配合 LiveData 使用 1.获取 ViewModel 实例,通过提供的类ViewModelProviders: MyViewModel model = ViewModelProviders.of...); 或带有 Factory 的 MyViewModel model = ViewModelProviders.of(activity,factory).get(MyViewModel.class);...MyViewModel model = ViewModelProviders.of(this).get(MyViewModel.class); model.getUsers().observe...1.实例化的代码 ViewModelProviders.of(activity,factory).get(MyViewModel.class) 1)首先是ViewModelProviders 的 of...至此ViewModelProviders of 做了哪些事情呢: 1、初始化了ViewModelProvider内部维护了 用于创建 VM 的 Factory,和用户存放 VM 的ViewModelStore
androidx.appcompat.app.AppCompatActivity; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProviders...import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; import androidx.lifecycle.ViewModelProviders...Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); model = ViewModelProviders.of...import androidx.fragment.app.Fragment; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProviders...下面我们来看源码: ViewModelProviders.of(getActivity()) of方法 @MainThread public static ViewModelProvider of(@NonNull
你能对于gradle的一个重要的configuration有一个更深入的了解 ViewModelProviders被移除了 我们碰到的第二个问题就是在最新版本中ViewModelProviders被移除了...这部分其实也还是比较简单的,因为我们上面剔除了旧的依赖,所以我们的项目内项目内其实已经没有了ViewModelProviders的代码了。...第一个版本我们尽量避免大面积改造,所以我们只要同包名下拷贝一个类似的ViewModelProviders类就行了。 但是我们正常只需要几个of方法就好了。...package androidx.lifecycle @Deprecated("ViewModelProviders adapter not support any more") object ViewModelProviders
MyViewModel model = ViewModelProviders.of(this).get(MyViewModel.class); model.getUsers().observe...(this, users -> { // update UI }); } } ViewModel的生命周期 这样即使Activity被重建了,通过ViewModelProviders...void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); model = ViewModelProviders.of...Bundle savedInstanceState) { super.onCreate(savedInstanceState); SharedViewModel model = ViewModelProviders.of
(当然还有很多其他方式) 2.2、绑定Activity 这里有如下方式: ViewModelProviders.of(this).get(class)(过时) new ViewModelProvider...(this,factory).get(class)(常用) new ViewModelProvider.NewInstanceFactory().create(class); 第一种方式:ViewModelProviders.of...(this).get(class) ViewModelProviders.of(this).get(MyViewModel.class); implementation "androidx.fragment...这个方式比较老了,在源码中也能发现,ViewModelProviders的of方法其实也是调用了ViewModelProvider,自动创建了一个factory。...----------------ViewModelProviders.class---------------- @NonNull @MainThread public static ViewModelProvider
void onCreate(Bundle savedInstanceState) { //传this,基于act创建viewModel mCommonViewModel = ViewModelProviders.of...原理 以ViewModelProviders.of(this).get(CommonViewModel.class)为入口,先看ViewModelProviders.of, //ViewModelProviders.java...ViewModelStore用来存储ViewModel return new ViewModelProvider(activity.getViewModelStore(), factory); } 这里只需知道ViewModelProviders.of
然后在 onCreate中这样调用: ViewModelProviders.of().get(.class) 在 Court-Counter...进一步审视 ViewModelsProviders.of 第一次调用 ViewModelProviders.of 方法是在 MainActivity 中,创建了一个新的 ViewModel 实例。...ViewModelProviders._of_(****).get(ScoreViewModel....所有这些逻辑都是通过调ViewModelProviders.of().get(.class) 实现的。...ViewModelProviders.of 方法通过作为参数传入的 UI控制器与 ViewModel 进行关联。 想要了解更多 ViewModel 化的好处?
ViewModel 的基本使用 ViewModel 的使用也非常简单,Android 提供了一个 ViewModel 类让我们去继承,并且提供了 ViewModelProviders 来帮助我们实例化...void loadUsers() { // Do an asynchronous operation to fetch users. } } c):在 Activity 中借助 ViewModelProviders...MyViewModel model = ViewModelProviders.of(this).get(MyViewModel.class); model.getUsers().observe...ViewModel 的实现原理 回顾下我们之前使用 ViewModel 的代码: MyViewModel model = ViewModelProviders.of(this).get(MyViewModel.class...); 这里先从 ViewModelProviders.of 方法入手看看: //ViewModelProviders public static ViewModelProvider of(@NonNull
androidx.appcompat.app.AppCompatActivity; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProviders...beginTransaction().replace(R.id.frameLayout2,new TwoFragment()).commit(); //初始化 ViewModel domeModel = ViewModelProviders.of...io.dcloud.H56580E2E.viewModelLiveData; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProviders...import java.util.concurrent.TimeUnit; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProviders...@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); domeModel = ViewModelProviders.of
ViewModel { final public DemoData mData = new DemoData(); public DemoViewModel() {} } 3) 获取数据 通过ViewModelProviders...DemoData data = ViewModelProviders.of(getActivity()) .get(DemoViewModel.class) .mData...MyViewModel model = ViewModelProviders.of(this).get(MyViewModel.class); model.getUsers().observe...(以Activity为例) 第一部分:获取ViewModelProvider 调用ViewModelProviders.of(Activity); 一路调用,最终走到HolderFragmentManager.holderFragmentFor
Context 可以选择继承 AndroidViewModel,这里继承 ViewModel 就可以了,然后,在 Activity 中使用就可以了,具体如下: MViewModel mViewModel = ViewModelProviders.of...Article article : articles) { Log.i(TAG,article.getDesc()); } } }); 来看一看调用过程,从 ViewModelProviders...开始,ViewModelProviders 主要提供四个静态方法获取对应的 ViewModelProvider,四个静态方法如下: public static ViewModelProvider of...R.layout.fragment_title, container, false); titleBinding = DataBindingUtil.bind(view); mViewModel = ViewModelProviders.of...R.layout.fragment_content, container, false); contentBinding = DataBindingUtil.bind(view); mViewModel = ViewModelProviders.of
mTestViewModel = ViewModelProviders.of(this).get(TestViewModel.class); MutableLiveData nameEvent...mTestViewModel.getNameEvent().setValue(name); 可能部分同学有这样的疑问了,我们的 ViewModel 是通过 ViewModelProviders.of(this...new TestViewModel(mKey); } } public String getKey() { return mKey; } } ViewModelProviders.of...// LiveDataSampleActivity(TestFragment 依赖的 Activity) mTestViewModel = ViewModelProviders.of(this, new...TAG, "onChanged: s = " + s); mTvName.setText(s); } }); // TestFragment 中 mViewModel = ViewModelProviders.of
) 8 setupViewModel() 9 } 10 11 private fun setupViewModel() { 12 mViewModel = ViewModelProviders.of...20 //todo ... 21 }) 22 } 23} 实际上我们只需一行代码就可以获取到ViewModel的实例,通过ViewModelProviders.of...我们回到获取ViewModelProvider的ViewModelProviders.of()方法,进入源码查看。...已经有了factory,最后在获取ViewModel时传入即可 1mViewModel = ViewModelProviders.of(this, ContactsFactory.getInstance
androidx.lifecycle.ViewModel; import androidx.lifecycle.ViewModelProvider; import androidx.lifecycle.ViewModelProviders...savedInstanceState) { // Inflate the layout for this fragment final MyViewMode myViewMode; myViewMode = ViewModelProviders.of...androidx.databinding.DataBindingUtil; import androidx.fragment.app.Fragment; import androidx.lifecycle.ViewModelProviders...savedInstanceState) { // Inflate the layout for this fragment MyViewMode myViewMode; myViewMode = ViewModelProviders.of
Application 的引用 class MainActivity : AppCompatActivity() { private val viewModel by lazy { ViewModelProviders.of...CustomTimerActivity class CustomTimerActivity : AppCompatActivity() { private val viewModel by lazy { ViewModelProviders.of...owner class CustomTimerActivity : AppCompatActivity() { private val viewModel by lazy { ViewModelProviders.of
androidx.lifecycle.SavedStateVMFactory; import androidx.lifecycle.ViewModelProvider; import androidx.lifecycle.ViewModelProviders...savedInstanceState); binding = DataBindingUtil.setContentView(this,R.layout.activity_main); this.myVIewModel = ViewModelProviders.of
注意:本文只是初稿 基于 android.arch.lifecycle:extensions:1.1.1 XXXViewModel xxxViewModel = ViewModelProviders.of...this ViewModel. */ @SuppressWarnings("WeakerAccess") protected void onCleared() { } } ViewModelProviders
void onCreate(Bundle savedInstanceState) { //传this,基于act创建viewModel mCommonViewModel = ViewModelProviders.of...Bundle savedInstanceState) { //这边创建时传入了SavedStateViewModelFactory mSavedStateViewModel = ViewModelProviders
领取专属 10元无门槛券
手把手带您无忧上云