zoukankan      html  css  js  c++  java
  • Android:解决重复打开界面问题

    点击界面A按钮,打开界面B,由于startActivity操作是异步执行的,假如在短时间内快速点击按钮,可能会导致打开多个B界面,这个时候可以重写Activity的startActivity事件。

    public class BaseActivity extends Activity {    
        
        protected boolean isDestroy;
        //防止重复点击设置的标志,涉及到点击打开其他Activity时,将该标志设置为false,在onResume事件中设置为true
        private boolean clickable=true;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            isDestroy=false;
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
            
        }
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
            isDestroy=true;
            
        }
    
        @Override
        protected void onResume() {
            super.onResume();
            //每次返回界面时,将点击标志设置为可点击
            clickable=true;
        }
    
        /**
         * 当前是否可以点击
         * @return
         */
        protected boolean isClickable(){
            return  clickable;
        }
    
        /**
         * 锁定点击
         */
        protected void lockClick(){
            clickable=false;
        }
    
    
    
        @Override
        public void startActivityForResult(Intent intent, int requestCode, Bundle options) {
            if(isClickable()) {
                lockClick();
                super.startActivityForResult(intent, requestCode,options);
            }
        }
    }

    这里重写的是 startActivityForResult,因为startActivity方法最终调用的是startActivityForResult方法。之前没注意这点在两个方法内都写了判断导致无法正常跳转了。

  • 相关阅读:
    什么是内部类
    "=="和equals方法究竟有什么区别?
    SWFUpload乱码问题的解决
    xStream转换XML、JSON
    Java文件下载
    笔记摘录
    Javascript 函数传参问题
    JQUERY伸缩导航
    ruby关于flip-flop理解上一个注意点
    ruby 使用Struct场景
  • 原文地址:https://www.cnblogs.com/linjzong/p/4627140.html
Copyright © 2011-2022 走看看