当前位置:  编程技术>移动开发
本页文章导读:
    ▪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可以在下面的方法中进行

	@Override
	protected 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();
	}


 2、使用Handler.post()将操作添加到UI消息队列中,这个会在主UI线程执行完成后会执行,即执行完了onResume()之后,这样会导致有段时间的延迟,会造成先回复home键退出之前的页面,然后停留几秒钟执行Fragment的入栈或弹栈操作。体验效果不是很好。因此推荐使用第一种方法,第一种方法会在onResume()进行操作,执行的时机比较好,不会出现延迟。

	new Handler().post(new Runnable() {
				
		@Override
		public void run() {
			// do something···
		}
	});




    
[2] 批改ViewPager调用setCurrentItem时,滑屏的速度
    来源: 互联网  发布时间: 2014-02-18
修改ViewPager调用setCurrentItem时,滑屏的速度

        在使用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语言数据库方面的知识的学习,而是先提炼数据库开发
    的要点列表:
    • 创建数据库
    • 连接数据库
    • 管理数据库
    不管你用什么样的程序语言,这些问题都是要解决的直接问题,没有这些方法,进行数据库开发就是妄谈,所以只要你
    按照这些关键点去进行测试和探索,必有收获。



    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3