android-旋转手机屏幕时ViewPager显示的问题

问题描述

旋转手机屏幕时ViewPager显示的问题
程序代码片段中ViewPager视图里含有WebViews。当我旋转手机时,ViewPager总显示第一个页面。这是因为活动和片段又被重新创建。如何保存ViewPager的状态不让活动和片段重新创建呢?下面的代码不能正常执行。

@Overridepublic void onActivityCreated(Bundle savedInstanceState)     {        super.onActivityCreated(savedInstanceState);        if (savedInstanceState != null)         {            int pos  = savedInstanceState.getInt(""currentPosition"");            this.setSelectedItem(pos);        }    }    @Override    public void onSaveInstanceState(Bundle outState)     {        super.onSaveInstanceState(outState);        outState.putInt(""currentPosition"" positionOfSelectedIndex);    }

解决方案

如果改变了系统屏幕的设置方向
会触发onConfigurationChanged事件
重写,将当前状态在其内进行处理

解决方案二:
它是关于如何创建你的FragmentActivity(主机活动)。似乎不能保存viewpager的状态但你可以保存viewpager'适配器中fragments的状态。你也可以同样的方式保存一些内部数据片段。同样如果你不想适配器自动摧毁视图 (当你刷新viewpager)重写适配器的摧毁方法。

解决方案三:
在片段的构造函数中添加:

setRetainInstance(true);

如果你有很多构造函数,要确保这些是无参的构造函数,每个其它的构造函数都调用

this();

然后在 FragmentActivity中实例化 PageAdapter,加入以下代码:

myPager = (ViewPager)findViewById(R.id.pager);myAdapter = new MyPagerAdapter(anyParamsYouMightHave);myPager.setAdapter(myAdapter);myPageAdpater.setCurrentItem(indexOfSomePointYouWishToReturnTo);
时间: 2025-01-31 05:58:31

android-旋转手机屏幕时ViewPager显示的问题的相关文章

Android 截取手机屏幕两种实现方法

Android 截取手机屏幕两种实现方法 最近在开发的过程中,遇到了一个需要截取屏幕保存为图片的需求,具体为截取webview的视图保存图片. 方法1:首先想到的思路是利用SDK提供的View.getDrawingCache()方法: public void printScreen(View view) { String imgPath = "/sdcard/test.png"; view.setDrawingCacheEnabled(true); view.buildDrawingC

Android获取手机屏幕宽高、状态栏高度以及字符串宽高信息的方法

  Android获取手机屏幕宽高.状态栏高度以及字符串宽高信息的方法         这篇文章主要介绍了Android获取手机屏幕宽高.状态栏高度以及字符串宽高信息的方法,涉及Android获取文字宽高.状态栏高度.textView宽度及屏幕尺寸的相关技巧,需要的朋友可以参考下 首先定义TextView对象commentText 获取文字的宽高: ? 1 2 3 4 5 6 7 8 TextPaint textPaint = new TextPaint(Paint.ANTI_ALIAS_FLA

android真机调试时无法显示logcat信息的解决方法介绍

以下是对android真机调试时无法显示logcat信息的解决方法进行了详细的分析介绍,需要的朋友可以过来参考下   android真机调试时无法显示logcat信息的解决方法介绍: window-->show view-->android->devices, 打开devices,点击右边的截屏图片的按钮.等到出现截图的时候,logcat就出来信息了!

android真机调试时无法显示logcat信息的解决方法介绍_Android

android真机调试时无法显示logcat信息的解决方法介绍: window-->show view-->android->devices, 打开devices,点击右边的截屏图片的按钮.等到出现截图的时候,logcat就出来信息了!

android真机调试时无法显示logcat信息的解决办法

android真机调试时无法显示logcat信息的解决办法: window-->show view-->android->devices, 打开devices,点击右边的截屏图片的按钮.等到出现截图的时候,logcat就出来信息了!

解析Android截取手机屏幕两种实现方案

最近在开发的过程中,遇到了一个需要截取屏幕保存为图片的需求,具体为截取webview的视图保存图片. 方法1:首先想到的思路是利用SDK提供的View.getDrawingCache()方法: public void printScreen(View view) { String imgPath = "/sdcard/test.png"; view.setDrawingCacheEnabled(true); view.buildDrawingCache(); Bitmap bitmap

Android获取手机屏幕宽高

//如果是获取单位是像素,可以如下: Display display = getWindowManager().getDefaultDisplay(); Point size = new Point(); display.getSize(size); int width = size.x; int height = size.y; //如果不在Activity页面,可以通过获取默认display WindowManager wm = (WindowManager) context.getSyst

Android中获取手机屏幕大小的方法_Android

本文为大家解析Android中如何获取手机屏幕大小,提供一个解决方法,分享给大家供大家参考,具体内容如下 运行效果图: 运行程序后,当我们点击Button按钮时,可以看到下面的效果图: 具体代码: 我们可以通过使用类DisplayMetrics来获取手机屏幕的分辨率大小.DisplayMetrics类是获取手机屏幕各种属性的关键类.下面通过例子来展示如何获取手机屏幕的分辨率. 在布局文件main.xml中添加一个TextView对象,一个Button对象.其中TextView对象用来显示获得的分

Android编程基础之获取手机屏幕大小(DisplayMetrics应用)示例_Android

本文实例讲述了Android获取手机屏幕大小的方法.分享给大家供大家参考,具体如下: 这里主要用了三个对象TextView ,Button ,以及DisplayMetrics ,其中Displaymetrics 是取得手机屏幕大小的关键类,这个例子非常的简单,当我们点击按钮,触发事件,在TextView 里显示手机屏幕的宽高分辨率. 看一下效果图: 按钮触发前: 按钮触发后: 其中我们在res->layout->values->string.xml增加了两行如下: <string