当前位置: 编程技术>移动开发
本页文章导读:
▪IllegalStateException: Can not perform this action after onSaveInstanceState解决方法 IllegalStateException: Can not perform this action after onSaveInstanceState解决办法首先我们需要弄清楚onSaveInstanceState方法是在什么时候会被调用,当该Activity即将被销毁前或者按home键退出时调用,来保存Act.........
▪ 批改ViewPager调用setCurrentItem时,滑屏的速度 修改ViewPager调用setCurrentItem时,滑屏的速度 在使用ViewPager的过程中,有需要直接跳转到某一个页面的情况,这个时候就需要用到ViewPager的setCurrentItem方法了,它的意思是跳转到ViewPager.........
▪ 挖坑 - 之有关问题和技术 挖坑 - 之问题和技术
1、解决问题的方法
思想 :
从退到源头出发,从思考最终极的问题开始。从本质问题开始,而不是表象,找到问题的本质,才进行解决。当我们把问题从一个.........
[1]IllegalStateException: Can not perform this action after onSaveInstanceState解决方法
来源: 互联网 发布时间: 2014-02-18
IllegalStateException: Can not perform this action after onSaveInstanceState解决办法
首先我们需要弄清楚onSaveInstanceState方法是在什么时候会被调用,当该Activity即将被销毁前或者按home键退出时调用,来保存Activity数据的,如果在保存玩状态后,桌面通过其他方式启动程序且需要进行Fragment的入栈或弹栈操作就会出错。桌面其他方式如widget、悬浮窗、通知状态栏等方式通过Intent启动程序。
此时拦截该Intent可以在下面的方法中进行
@Overrideprotected void onNewIntent(Intent intent) { // 拦截Intent,做相应处理 }
如果在这里拦截了Intent进行Fragment的添加和弹栈就会报错:IllegalStateException: Can not perform this action after onSaveInstanceState。不能在onSaveInstanceState之后立即进行这些操作。解决办法目前找到两种
1、在onResume执行Fragment的入栈或弹栈操作,即在onNewIntent中保存Intent,在onResume()中进行处理。推荐使用
private Intent onHomeIntent; // home键退出后通过intent启动程序 @Override protected void onNewIntent(Intent intent) { // 拦截Intent,保存Intent,在onResume中进行处理 onHomeIntent = intent; } @Override public void onResume() { if(onHomeIntent != null){ // home键退出后通过intent启动程序 // dosomething··· onHomeIntent = null; } super.onResume(); }
new Handler().post(new Runnable() { @Override public void run() { // do something··· } });
[2] 批改ViewPager调用setCurrentItem时,滑屏的速度
来源: 互联网 发布时间: 2014-02-18
修改ViewPager调用setCurrentItem时,滑屏的速度
二、在初始化ViewPager时,对ViewPager作如下设置:
运行代码后你就发现,它是直接跳转,没有滑屏效果了。
在使用ViewPager的过程中,有需要直接跳转到某一个页面的情况,这个时候就需要用到ViewPager的setCurrentItem方法了,它的意思是跳转到ViewPager的指定页面,但在使用这个方法的时候有个问题,跳转的时候有滑动效果,当需要从当前页面跳转到其它页面时,跳转页面跨度过大、或者ViewPager每个页面的视觉效果相差较大时,通过这种方式实现ViewPager跳转显得很不美观,怎么办呢,我们可以去掉在使用ViewPager的setCurrentItem方法时的滑屏速度,具体实现如下:
一、自定义一个Scroll类,用于控制ViewPager滑动速度:
import android.content.Context; import android.view.animation.Interpolator; import android.widget.Scroller; public class FixedSpeedScroller extends Scroller { private int mDuration = 0; public FixedSpeedScroller(Context context) { super(context); } public FixedSpeedScroller(Context context, Interpolator interpolator) { super(context, interpolator); } public FixedSpeedScroller(Context context, Interpolator interpolator, boolean flywheel) { super(context, interpolator, flywheel); } @Override public void startScroll(int startX, int startY, int dx, int dy, int duration) { super.startScroll(startX, startY, dx, dy, mDuration); } @Override public void startScroll(int startX, int startY, int dx, int dy) { super.startScroll(startX, startY, dx, dy, mDuration); } }
二、在初始化ViewPager时,对ViewPager作如下设置:
/** * 设置ViewPager的滑动速度 * * */ private void setViewPagerScrollSpeed( ){ try { Field mScroller = null; mScroller = ViewPager.class.getDeclaredField("mScroller"); mScroller.setAccessible(true); FixedSpeedScroller scroller = new FixedSpeedScroller( mViewPager.getContext( ) ); mScroller.set( mViewPager, scroller); }catch(NoSuchFieldException e){ }catch (IllegalArgumentException e){ }catch (IllegalAccessException e){ } }
运行代码后你就发现,它是直接跳转,没有滑屏效果了。
[3] 挖坑 - 之有关问题和技术
来源: 互联网 发布时间: 2014-02-18
挖坑 - 之问题和技术
-
1、解决问题的方法思想 :
- 从退到源头出发,从思考最终极的问题开始。
- 从本质问题开始,而不是表象,找到问题的本质,才进行解决。
- 当我们把问题从一个概念性的问题,逐步切割成一个简单的问题的时候,实现就可以执行了。
- 解决问题的步骤:
- 发现问题
- 分析问题,抓住本质
- 分解问题,通盘考虑
- 解决核心问题,逐个突破
举例:
比如说我要开发一个个人信息管理系统。如果我只是说我要开发这样一个系统,拿对于谁都不值得从哪里入手进行实现。所以我要把问题大卸八块,然后逐个突破。- 个人信息管理系统
- 个人信息管理
- 个人账户管理
- 登陆
- 退出
- 修改密码
- 账户信息查看
- 事务管理
2、学习技术的方法
思想:
- 抽象通用属性,提炼设计思想
- 学习一项技术,要以自己的观点设计一番,如果自己是设计师,会如何设计,然后再去探索。
- 忘记具体语言,直指问题的核心。
- 当我们学习什么的时候,最好的方式不是学习那些复杂的实现,而是直接抓住本质,进行学习,对本质理解的越透彻,
对学习的东西,也就越精通。- 所有学习程序,要学思想,看源码,找根源。
- 步骤:
- 抓住关键点,定义概念,功能,优劣,设计意图
- 提炼问题域,
- 用自己的语言设计,
- 然后用合适的语言实现。
比如我不会go语言,但是我知道go语言是目前支持服务器端的开发工作,但是我会java,我有程序开发的思想。我想要用go语言进行数据库的开发的时候,我不急着进行go语言数据库方面的知识的学习,而是先提炼数据库开发的要点列表:- 创建数据库
- 连接数据库
- 管理数据库
不管你用什么样的程序语言,这些问题都是要解决的直接问题,没有这些方法,进行数据库开发就是妄谈,所以只要你按照这些关键点去进行测试和探索,必有收获。
最新技术文章: