ActivityGroup中onBackPressed无效

来源:互联网 发布:淘宝标题优化技巧 编辑:程序博客网 时间:2024/05/22 01:45

在项目中,主页使用到了ViewPager和LocalActivityManager的组合。也就是ActivityGroup,但是在做快速两次点击退出应用的时候发现一个问题:

在ActivityGroup也就是主Activity中在点击back键的时候,并不会调用到onBackPressed()方法和onKeyDown()

解决办法:

  1. 在主Acitvity中调用:
    private long lastBackTime = 0L;    @Override    public boolean dispatchKeyEvent(KeyEvent event)    {        if (event.getKeyCode() == KeyEvent.KEYCODE_BACK &&event.getAction()==KeyEvent.ACTION_DOWN){            long curTime = System.currentTimeMillis();            if(curTime - lastBackTime < 1000){                super.onBackPressed();                return true;            }else{                SingleToast.toastShow(this, "再次点击退出应用");                lastBackTime = curTime;            }            return false;        }        return super.dispatchKeyEvent(event);    }
  1. 在每一个子Activity中调用:
    private long lastBackTime = 0L;    @Override    public void onBackPressed() {        long curTime = System.currentTimeMillis();        if(curTime - lastBackTime < 1000){            super.onBackPressed();        }else{            SingleToast.toastShow(this, "再次点击退出应用");            lastBackTime = curTime;        }    }
  1. 每一个子Activity中调用:
    private long lastBackTime = 0L;    @Override    public void onBackPressed() {        long curTime = System.currentTimeMillis();        if(curTime - lastBackTime < 1000){            getParent().onBackPressed();        }else{            SingleToast.toastShow(this, "再次点击退出应用");            lastBackTime = curTime;        }    }

我是在ViewPager加LocalActivityManager的组合下做的实验,可能在使用TabActivity的时候会有些出入。但是大体上应该是差不多的。

参考:
https://segmentfault.com/a/1190000004406861
http://stackoverflow.com/questions/2796050/key-events-in-tabactivities/6511638#6511638
http://blog.csdn.net/johnny901114/article/details/7822878

0 0
原创粉丝点击