横竖屏切换 利用onSaveInstanceState来保存数据
来源:互联网 发布:写编程到底什么意思 编辑:程序博客网 时间:2024/06/10 13:00
我们有时候会发现,由竖屏切到横屏的时候,会出现问题,比如数据丢失,Fragemnt 重叠现象。这是由于横竖屏切换,OnCreate会重新走一遍。为了解决这个问题我们必须重写这个方法,并且保存数据在OnCreate里重新拿到。
protected void onSaveInstanceState(Bundle outState) { // TODO Auto-generated method stub super.onSaveInstanceState(outState); outState.putBoolean("changeScreen", true); Log.e(Tag, "-------onSaveInstanceState"); }在这里我们做横竖屏切换的时候,保存一个Boolean值,从而考虑在OnCreate怎么走逻辑,如下:
if (savedInstanceState == null) { Log.e(Tag, "-------onCreate--------"+savedInstanceState); }else{ Log.e(Tag, "-------onCreate--------"+savedInstanceState.getBoolean("changeScreen")); }
如果这个Activity 第一次启动,那么savedInstanceState== null,时候做初始化的操作,若做了横竖屏的切换,那savedInstanceState != null;这个时候就要走正确的逻辑,不需要重新初始化,导致某些操作丢失。
一个保存数据的x小Demo
我们通过一个ListView 中点击Checkbox 例子来学习如何在实战中,保存数据。我曾经写过一个Checkbox选中状态,滑动混乱的Demo,ListView中Checkbox点击,滑动状态混乱,比如我们切换横屏的话,之前选中的CheckBox 都不在显示,因为切换的时候OnCreate 重新创建了Adapter,不会再有被点击的记录,这个时候我们需要在Activity中重写
onSaveInstanceState,如下:
@Override protected void onSaveInstanceState(Bundle outState) { // TODO Auto-generated method stub super.onSaveInstanceState(outState); outState.putSerializable("select", checkBoxAdapter); }
直接保存了该CheckboxAdapter,然后在OnCreate中这样写:
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); list = $(R.id.list); if(savedInstanceState == null) { checkBoxAdapter = new CheckBoxAdapter(getApplicationContext()); list.setAdapter(checkBoxAdapter); } else { checkBoxAdapter = (CheckBoxAdapter)savedInstanceState.getSerializable("select"); list.setAdapter(checkBoxAdapter); } }
若,第一次进来,则初始化Adapter,若切换横竖屏,直接拿到保存的Adapter对象,重新与ListView对应上,这样问题就解决了,最后附上源码:
横竖屏保存ListView数据。
0 0
- 横竖屏切换 利用onSaveInstanceState来保存数据
- Android横竖屏切换数据保存的方法以及onSaveInstanceState() 的实现
- 横竖屏切换保存数据
- android 横竖屏切换与数据保存
- Android 横竖屏切换时,保存数据
- android 横竖屏切换与数据保存
- Android 横竖屏切换保存当前数据
- android横竖屏切换与数据保存
- Android横竖屏切换保存数据
- 横竖屏切换onSaveInstanceState() 和 onRestoreInstanceState()
- Android开发日志之横竖屏切换数据保存问题
- android 横竖屏切换的生命周期调用,数据保存
- android: 横竖屏切换总结-布局改变和数据保存
- android: 横竖屏切换总结-布局改变和数据保存
- android: 横竖屏切换总结-布局改变和数据保存
- android: 横竖屏切换总结-布局改变和数据保存
- android-横竖屏切换总结-布局改变和数据保存
- android-横竖屏切换总结-布局改变和数据保存
- hibernate 级联验证-@Valid (JDK1.7)
- SDUT 2171 上升子序列
- appium python client scroll 2 view(not in current screen)
- 桥接(Bridge)
- Linux驱动调试中的Debugfs的使用简介
- 横竖屏切换 利用onSaveInstanceState来保存数据
- js页面上实现搜索
- 欢迎使用CSDN-markdown编辑器
- appium for python client scroll to view(not in current screen)
- Partition-方案二:通过 Insert with a subquery 方法
- 基于内容的图像检索引擎(以图搜图)
- LintCode:子数组之和
- uva624(DP)
- uva208