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

  • 相关阅读:
    centos7的网络设置
    day1学习
    举例讲解Linux系统下Python调用系统Shell的方法
    Python引用模块和查找模块路径
    详解Python中的循环语句的用法
    [cf1566H]Xorquiz
    [luogu5180]支配树
    [atAGC055D]ABC Ultimatum
    [cf1552H]A Serious Referee
    [gym102538H]Horrible Cycles
  • 原文地址:https://www.cnblogs.com/linjzong/p/4627140.html
Copyright © 2011-2022 走看看