Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 带有Viewpager2片段的Livedata_Android_Android Fragments_Android Livedata_Android Viewmodel_Android Viewpager2 - Fatal编程技术网

Android 带有Viewpager2片段的Livedata

Android 带有Viewpager2片段的Livedata,android,android-fragments,android-livedata,android-viewmodel,android-viewpager2,Android,Android Fragments,Android Livedata,Android Viewmodel,Android Viewpager2,我想更新我的旧安卓项目,并希望使用谷歌推荐的ViewModel和Livedata方式。 我使用Viewpager2和Tablayout,其中包含4个片段。 第一个片段有一个ViewModel,通过Livedata观察数据更改并更新其UI 我的问题是: 当我滑动到Viewpager中的第二个片段时会发生什么?第一个片段不再可见,但它仍然存在。碎片1的生命周期在不可见时会改变吗?如果没有,我如何停止更新它,因为它仍然会收到更新通知 我是否可以对所有4个片段使用相同的ViewModel,因为它们只是以

我想更新我的旧安卓项目,并希望使用谷歌推荐的ViewModel和Livedata方式。 我使用Viewpager2和Tablayout,其中包含4个片段。 第一个片段有一个ViewModel,通过Livedata观察数据更改并更新其UI

我的问题是:

  • 当我滑动到Viewpager中的第二个片段时会发生什么?第一个片段不再可见,但它仍然存在。碎片1的生命周期在不可见时会改变吗?如果没有,我如何停止更新它,因为它仍然会收到更新通知

  • 我是否可以对所有4个片段使用相同的ViewModel,因为它们只是以另一种方式可视化Livedata中的数据更改。我怎样才能做到


  • 谢谢

    好的,经过一些测试,我找到了答案

  • 第一个片段的生命周期在滑动到第二个片段时变为暂停,在向后滑动时变为恢复。 您可以使用这些事件并设置bool变量来更新ui或不更新ui

  • 可以对所有片段使用相同的ViewModel。当片段不可见时,只需注意不要更新。我的情况是,你可以使用应用程序的生命周期


  • 您好:)您是如何与所有片段共享同一个viewmodel的?:)@aeroxr1您可以这样做,即或在这里: