iis服务器助手广告
返回顶部
首页 > 资讯 > 精选 >【Android】怎么使用一个ViewModel用在多个Activity或者Fragment中
  • 826
分享到

【Android】怎么使用一个ViewModel用在多个Activity或者Fragment中

android 2023-08-18 12:08:49 826人浏览 安东尼
摘要

项目需求 在多个Activity或者Fragment中使用同一个ViewModel 需求实现 1.使用ActivityScope或FragmentScope 想在一个Activity或Fragment中共享ViewModel实例,可以使用A

项目需求

在多个Activity或者Fragment中使用同一个ViewModel

需求实现

1.使用ActivityScope或FragmentScope

想在一个Activity或Fragment中共享ViewModel实例,可以使用ActivityScope或FragmentScope。这两种范围会根据它们所绑定的Activity或Fragment自动管理ViewModel实例的生命周期。

例如,创建一个继承自AndroidX库中的ViewModel类的MyViewModel实例,并将其分配给MainActivity和MyFragment:

public class MainActivity extends AppCompatActivity {    private MyViewModel mViewModel;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        // 获取ViewModel实例        mViewModel = new ViewModelProvider(this).get(MyViewModel.class);    }}public class MyFragment extends Fragment {    private MyViewModel mViewModel;    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {        View view = inflater.inflate(R.layout.fragment_my, container, false);        // 获取ViewModel实例        mViewModel = new ViewModelProvider(requiReactivity()).get(MyViewModel.class);        return view;    }}

注意,在MainActivity中,使用this作为ViewModelProvider的构造函数参数,而在MyFragment中,使用requireActivity()作为参数。这是因为Fragment需要使用其父Activity的范围来访问ViewModel实例。

2.使用ApplicationScope

如果想在整个应用程序中共享ViewModel实例,可以使用ApplicationScope。这种范围会在整个应用程序中自动管理ViewModel实例的生命周期。

例如,创建一个继承自AndroidX库中的ViewModel类的MyViewModel实例,并将其分配给整个应用程序:

public class MyApplication extends Application {    private MyViewModel mViewModel;    @Override    public void onCreate() {        super.onCreate();        // 获取ViewModel实例        mViewModel = new ViewModelProvider.AndroidViewModelFactory(this).create(MyViewModel.class);    }    public MyViewModel getViewModel() {        return mViewModel;    }}

注意,在MyApplication中,我们使用了ViewModelProvider.AndroidViewModelFactory这个工厂来创建ViewModel实例。这个工厂需要一个Application对象作为构造函数参数。

然后可以在任何Activity或Fragment中,通过MyApplication实例获取ViewModel实例:

public class MainActivity extends AppCompatActivity {    private MyViewModel mViewModel;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        // 获取ViewModel实例        MyApplication app = (MyApplication) getApplication();        mViewModel = app.getViewModel();    }}public class MyFragment extends Fragment {    private MyViewModel mViewModel;    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {        View view = inflater.inflate(R.layout.fragment_my, container, false);        // 获取ViewModel实例        MyApplication app = (MyApplication) requireActivity().getApplication();        mViewModel = app.getViewModel();        return view;    }}

注意,在MainActivity和MyFragment中,我们都使用了getApplication()方法来获取MyApplication实例,并从MyApplication实例中获取ViewModel实例。

总之,可以根据自己的需求选择合适的方法来共享ViewModel实例。

来源地址:https://blog.csdn.net/qq_43358469/article/details/130361027

--结束END--

本文标题: 【Android】怎么使用一个ViewModel用在多个Activity或者Fragment中

本文链接: https://www.lsjlt.com/news/373996.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 【Android】怎么使用一个ViewModel用在多个Activity或者Fragment中
    项目需求 在多个Activity或者Fragment中使用同一个ViewModel 需求实现 1.使用ActivityScope或FragmentScope 想在一个Activity或Fragment中共享ViewModel实例,可以使用A...
    99+
    2023-08-18
    android
  • Android中怎么关闭多个Activity
    Android中怎么关闭多个Activity,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1、使用Application来进行关闭public class&nbs...
    99+
    2023-05-30
    android activity
  • Android中怎么使用Activity和Fragment传递数据
    Android中怎么使用Activity和Fragment传递数据,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。第一种方式,也是最常用的方式,就是使用Bundle来传递参数&n...
    99+
    2023-05-30
    fragment activity android
  • 怎么在Android中利用Activity实现一个监听器
    怎么在Android中利用Activity实现一个监听器?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Activity在Activity中,使用findViewById(int...
    99+
    2023-06-14
  • 怎么在Android中利用Fragment模仿一个微信界面
    本篇文章为大家展示了怎么在Android中利用Fragment模仿一个微信界面,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。什么是Fragment  自从Android 3.0中引入fragment...
    99+
    2023-05-30
    android fragment
  • 怎么用Knockout.Js创建一个ViewModel
    本篇内容主要讲解“怎么用Knockout.Js创建一个ViewModel”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Knockout.Js创建一个Vie...
    99+
    2024-04-02
  • 怎么在react中使用axios 跨域访问一个或多个域名
    这篇文章将为大家详细讲解有关怎么在react中使用axios 跨域访问一个或多个域名,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1.react + axios 跨域访问一个域名配置非常简单...
    99+
    2023-06-08
  • 在Android 开发中使用Activity怎么实现一个隐式跳转功能
    在Android 开发中使用Activity怎么实现一个隐式跳转功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。创建第二个activity就是创建一个class,继承自And...
    99+
    2023-05-31
    activity android roi
  • Android中怎么使用Fragment
    在Android中使用Fragment需要以下步骤: 创建一个继承自Fragment类的子类。在这个子类中可以实现Fragmen...
    99+
    2024-04-03
    Android Fragment
  • Android开发中怎么启动另一个应用中的Activity
    这篇文章将为大家详细讲解有关Android开发中怎么启动另一个应用中的Activity,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Android 启动另一个App/apk中的Activit...
    99+
    2023-05-31
    android roi activity
  • 怎么在Android中使用WebSocket实现一个多人游戏
    今天就跟大家聊聊有关怎么在Android中使用WebSocket实现一个多人游戏,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。webSocket流程客户端开始连接------->...
    99+
    2023-05-30
    android websocket
  • 怎么在android应用中利用Fragment与RadioButton实现一个底部导航栏
    本篇文章为大家展示了怎么在android应用中利用Fragment与RadioButton实现一个底部导航栏,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。首先我们先在activity_mian.xm...
    99+
    2023-05-31
    fragment android roi
  • 怎么在Android中实现一个滑动退出Activity功能
    怎么在Android中实现一个滑动退出Activity功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。实现Android 滑动退出Activity的功能and...
    99+
    2023-05-30
    android activity roi
  • linux下cp目录时怎么排除一个或者多个目录
    本篇内容介绍了“linux下cp目录时怎么排除一个或者多个目录”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!说明:/home目录里面有dat...
    99+
    2023-06-13
  • 怎么在Android中实现一个观察者与被观察者
    本篇文章给大家分享的是有关怎么在Android中实现一个观察者与被观察者,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。概述:观察者模式(又被称为发布-订阅(Publish/Su...
    99+
    2023-05-30
    android
  • 怎么在Android中实现两个Fragment之间的跳转
    这篇文章主要介绍了怎么在Android中实现两个Fragment之间的跳转,编程网小编觉得不错,现在分享给大家,也给大家做个参考,一起跟随编程网小编来看看吧!Android是什么Android是一种基于Linux内核的自由及开放源代码的操作...
    99+
    2023-05-30
    android fragment
  • Android中Activity组件怎么使用
    今天小编给大家分享一下Android中Activity组件怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Activi...
    99+
    2023-06-26
  • 怎么引用另一个Activity的内容
    要引用另一个Activity的内容,你可以使用Intent来传递数据。下面是一种常见的方法:首先,在要引用内容的Activity中,...
    99+
    2023-08-18
    Activity
  • 使用python怎么在一行中输出多个数
    本篇文章给大家分享的是有关使用python怎么在一行中输出多个数,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、使用range方法快速生成10-90的数字添加进list列表。...
    99+
    2023-06-15
  • 在android中使用GridView实现一个查看更多功能
    这期内容当中小编将会给大家带来有关在android中使用GridView实现一个查看更多功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。首先来看一下效果图;  代码:<LinearLay...
    99+
    2023-05-31
    android gridview idv
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作