当前位置: 首页 > 知识库问答 >
问题:

Android Arch组件ViewModel和LiveData在屏幕旋转后触发

仰雅昶
2023-03-14

我在使用viewmodellivedataarch组件时遇到了一个问题。当使用片段并旋转屏幕时,观察者会被触发...

我试图在所有片段生命周期方法中移动viewmodel=viewmodelproviders.of(this).get(mainviewmodel::class.java),但没有成功。

我的场景相对简单:

    null

提前感谢!

共有1个答案

令狐献
2023-03-14

Ok终于找到了问题和如何解决。LiveData不是为单个事件设计的。出于这个原因,有几种方法可以修复或处理它,这两个链接对我很有用:

何塞·阿尔塞雷卡处理这个问题的帖子

何塞·阿尔塞雷卡的事件观察者

viewModel.eventLiveData.observe(this, EventObserver {
     it?.let {
          shortToast(it.message)
     }
})
 类似资料:
  • 在屏幕旋转后,虽然我在super.onCreate(null);,中传递null,但我得到了object返回的nullPointerException异常。我知道在传递savedInstanceState=null的同时必须销毁并重新创建活动,这意味着活动应该在旋转后开始,因为它是第一次开始,为什么在旋转后会出现此异常? onCreate()代码段,其中名为historyText的对象 Logca

  • 我正在使用NavController:。一切都很好,直到我旋转我的设备,然后我无法和。 在日志中:FragmentNavigator:忽略popBackStack()调用:FragmentManager已保存其状态,而FragmentNavigator:忽略导航()调用:FragmentManager已保存其状态 当我看到谷歌的样本,他们没有任何关于这个问题,有所有的工作良好。所以我不明白这就是问

  • 实现在竖屏的NavigationController中push一个横屏的UIViewController,模拟器测试兼容5.0、6.0系统。实现程序中手动旋转屏幕的效果。 [Code4App.com]

  • 我想在模拟器上测试手机的旋转,我看到我们必须使用CtrlF11的所有地方,但它只旋转模拟器的图像,不会启动配置更改事件或重新绘制活动。 下面是我用CtrlF11得到的: 那么,我必须用什么来模拟真实的旋转呢?

  • 我有一个应用程序小部件,当它更新时,获取具有与小部件匹配的维度的图像,并将该图像放入(通过)。它工作得很好。 但是对于支持主屏幕旋转的设备(我不是说基于设备方向的

  • 本文向大家介绍Flutter 控制屏幕旋转的实现,包括了Flutter 控制屏幕旋转的实现的使用技巧和注意事项,需要的朋友参考一下 最近需要做个平板的项目,然后需要直接横屏,有2种实现方式。 1, 随着屏幕旋转,布局自动调整。做横竖屏适配 2,强制屏幕横屏,不随着屏幕去调整 第一种方式这里就不做说明了。代码做适配就可以。 下面说一下第二种实现方式 Flutter 自带方式 flutter 为我们提