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方法。之前没注意这点在两个方法内都写了判断导致无法正常跳转了。

  • 相关阅读:
    PHP mysqli_fetch_assoc() 函数
    PHP mysqli_fetch_array() 函数
    PHP mysqli_fetch_all() 函数
    systemctl 列出系统所有服务
    HDU 1068 Girls And Boys 二分图题解
    Hadoop自学笔记(三)MapReduce简单介绍
    经典语录
    设计模式之九 单例模式
    NYOJ 587 blockhouses 【DFS】
    【从0開始Tornado建站】显示全部注冊用户
  • 原文地址:https://www.cnblogs.com/linjzong/p/4627140.html
Copyright © 2011-2022 走看看