是的@tomwyr,这是一个来自android框架的bug . Bug details

该修复程序在28.0.0-alpha3和AndroidX 1.0.0-alpha3中可用

但如果您现在不想更新到上面的版本,那么您可以像这样解决( I know this is a bad solution but I didn't see any other good way )

在您的活动中覆盖 onDestroy method 并将所有必填字段保存到本地变量 before calling super.onDestroy . 现在调用super.onDestroy,然后再次初始化ViewModel,并将所需的字段分配回ViewModel的新实例

Below code is in Kotlin :

override fun onDestroy() {

val oldViewModel = obtainViewModel()

if (!isFinishing) { //isFinishing will be false in case of orientation change

val requiredFieldValue = oldViewModel.getRequiredFieldValue()

super.onDestroy

val newViewModel = obtainViewModel()

if (newViewModel != oldViewModel) { //View Model has been destroyed

newViewModel.setRequiredFieldValue(requiredFieldValue)

}

} else {

super.onDestroy

}

}

private fun obtainViewModel(): SampleViewModel {

return ViewModelProviders.of(this).get(SampleViewModel::class.java)

}

android 旋转屏幕 view的调整,Android ViewModel在屏幕旋转时重新创建相关推荐

  1. Android之自定义view引用xml,Android自定义View在XML中映射错误

    Android开发中我们经常会遇到自定义View地址映射错误的情况,现将遇到的情况做下总结: //Android Studio的异常信息 Error inflating class 1.直接像下面这样 ...

  2. android 日程安排view,RecyclerView 列表控件中简单实现时间线

    时间 时间,时间,时间啊:走慢一点吧- 看见很多软件中都有时间线的东西,貌似天气啊,旅游啊什么的最多了:具体实现方式很多,在本篇文章中讲解一种自定义View封装的方式. 效果 先来看看效果. 分析 软 ...

  3. android.intent.action.view 融云,Android 融云SDK集成单聊

    一 .下载 SDK 您可以到融云官方网站下载融云 SDK.融云 SDK 各部分功能以插件化的形式独立提供,开发者可以根据自己的需要,自由组合下载.各组件的功能如下: IMKit – 融云 IM 界面组 ...

  4. android获得一个view的高度,Android ViewTreeObserver使用总结及获得View高度的几种方法...

    ViewTreeObserver 注册一个观察者来监听视图树,当视图树的布局.视图树的焦点.视图树将要绘制.视图树滚动等发生改变时,ViewTreeObserver都会收到通知,ViewTreeObs ...

  5. Android微信App 分享功能调整,Android 微信SDK分享功能(1)

    转于:http://blog.csdn.net/freesonhp/article/details/10296141 ----------------------------------------- ...

  6. Android --- This custom view should extend android.support.v7.widget.AppCompatTextView instead

    在实体类中加入以下两行代码就可以了 import android.annotation.SuppressLint; @SuppressLint("AppCompatCustomView&qu ...

  7. android 添加子view,如何在Android中向ImageView添加子视图

    正如pskink所说,你只能以编程方式将视图添加到 ViewGroup.您可以添加到LinearLayout,例如: LinearLayout layout = (LinearLayout)findV ...

  8. Android刷新机制-View绘制原理

    Android刷新机制-View绘制原理 Android刷新机制-SurfaceFlinger原理 Android刷新机制-Choreographer原理 一.概述 本文将从startActivity ...

  9. android viewpager动态加载页面,Android viewpager中动态添加view并实现伪无限循环的方法...

    本文实例讲述了Android viewpager中动态添加view并实现伪无限循环的方法.分享给大家供大家参考,具体如下: viewpager的使用,大家都熟悉,它可以实现页面之间左右滑动的切换,这里 ...

最新文章

  1. linux udevd服务 设备管理工具 简介
  2. Python模型顶点法线修复
  3. C# 读取Excel中的时间
  4. apache-jmeter-3.1的简单压力测试使用方法(下载和安装)
  5. js截屏 video_js获取video任意时间的画面截图
  6. 高并发服务遇 redis 瓶颈引发的事故
  7. Go netpoller 网络模型之源码全面解析
  8. linux如何判断网线插入_“Linux”中如何判断哪个网卡连接网线?
  9. PAT乙级(1013 数素数)
  10. 为什么那么多人用“ji32k7au4a83”作密码?
  11. 活动合作 | AI NEXTCon 硅谷AI技术峰会(北京分会)大咖来袭
  12. 多线程之CountDownLatch工具类
  13. 2022研究生电子设计竞赛总结(东北赛区一等奖、国家二等奖)
  14. 修改 mysql 的默认端口号_mysql的默认端口号修改方法
  15. 深度学习识别手写字体数字
  16. Ubuntu16.04下用umake安装vscode
  17. 怎样给div加css,div加css教程
  18. Linux查询状态的命令,LINUX常用的系统状态查询命令
  19. css3炫酷环形背景动画
  20. 拼多多虚拟资源、虚拟店铺教程

热门文章

  1. 2022年广西食品安全管理员模拟试题及答案
  2. 网桥(生成树网桥和源路由网桥)
  3. 小木虫网站登录返回404
  4. 7人团队敏捷管理手册
  5. Unity 语音识别以及音频可视化
  6. java和scala代码可以混合编写吗_Scala字符串插值的妙用,以及java+scala混合编程
  7. 013-zabbix trapper方式监控
  8. MySQL查询(DQL)之基础查询+条件查询+排序查询
  9. win10自动重启另辟蹊径解决方案
  10. (已解决)ubuntu16.04 Nvidia驱动安装成功却无法检测到外接显示器