android 旋转屏幕 view的调整,Android ViewModel在屏幕旋转时重新创建
是的@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在屏幕旋转时重新创建相关推荐
- Android之自定义view引用xml,Android自定义View在XML中映射错误
Android开发中我们经常会遇到自定义View地址映射错误的情况,现将遇到的情况做下总结: //Android Studio的异常信息 Error inflating class 1.直接像下面这样 ...
- android 日程安排view,RecyclerView 列表控件中简单实现时间线
时间 时间,时间,时间啊:走慢一点吧- 看见很多软件中都有时间线的东西,貌似天气啊,旅游啊什么的最多了:具体实现方式很多,在本篇文章中讲解一种自定义View封装的方式. 效果 先来看看效果. 分析 软 ...
- android.intent.action.view 融云,Android 融云SDK集成单聊
一 .下载 SDK 您可以到融云官方网站下载融云 SDK.融云 SDK 各部分功能以插件化的形式独立提供,开发者可以根据自己的需要,自由组合下载.各组件的功能如下: IMKit – 融云 IM 界面组 ...
- android获得一个view的高度,Android ViewTreeObserver使用总结及获得View高度的几种方法...
ViewTreeObserver 注册一个观察者来监听视图树,当视图树的布局.视图树的焦点.视图树将要绘制.视图树滚动等发生改变时,ViewTreeObserver都会收到通知,ViewTreeObs ...
- Android微信App 分享功能调整,Android 微信SDK分享功能(1)
转于:http://blog.csdn.net/freesonhp/article/details/10296141 ----------------------------------------- ...
- Android --- This custom view should extend android.support.v7.widget.AppCompatTextView instead
在实体类中加入以下两行代码就可以了 import android.annotation.SuppressLint; @SuppressLint("AppCompatCustomView&qu ...
- android 添加子view,如何在Android中向ImageView添加子视图
正如pskink所说,你只能以编程方式将视图添加到 ViewGroup.您可以添加到LinearLayout,例如: LinearLayout layout = (LinearLayout)findV ...
- Android刷新机制-View绘制原理
Android刷新机制-View绘制原理 Android刷新机制-SurfaceFlinger原理 Android刷新机制-Choreographer原理 一.概述 本文将从startActivity ...
- android viewpager动态加载页面,Android viewpager中动态添加view并实现伪无限循环的方法...
本文实例讲述了Android viewpager中动态添加view并实现伪无限循环的方法.分享给大家供大家参考,具体如下: viewpager的使用,大家都熟悉,它可以实现页面之间左右滑动的切换,这里 ...
最新文章
- linux udevd服务 设备管理工具 简介
- Python模型顶点法线修复
- C# 读取Excel中的时间
- apache-jmeter-3.1的简单压力测试使用方法(下载和安装)
- js截屏 video_js获取video任意时间的画面截图
- 高并发服务遇 redis 瓶颈引发的事故
- Go netpoller 网络模型之源码全面解析
- linux如何判断网线插入_“Linux”中如何判断哪个网卡连接网线?
- PAT乙级(1013 数素数)
- 为什么那么多人用“ji32k7au4a83”作密码?
- 活动合作 | AI NEXTCon 硅谷AI技术峰会(北京分会)大咖来袭
- 多线程之CountDownLatch工具类
- 2022研究生电子设计竞赛总结(东北赛区一等奖、国家二等奖)
- 修改 mysql 的默认端口号_mysql的默认端口号修改方法
- 深度学习识别手写字体数字
- Ubuntu16.04下用umake安装vscode
- 怎样给div加css,div加css教程
- Linux查询状态的命令,LINUX常用的系统状态查询命令
- css3炫酷环形背景动画
- 拼多多虚拟资源、虚拟店铺教程