关闭

popupwindow和dialog监听返回键

4421人阅读 评论(1) 收藏 举报
分类:

使用情况:
在activity中,出现了popupwindow和dialog,这个时候,如果点击返回键,它们消失了,但是一些操作还在继续。如:1、进行耗时操作,出现dialog提醒用户等待,这时,按下返回键,dialog消失,但是,耗时操作还在继续。这是因为,dialog拦截了返回键,消费了它,让自己消失,但是其他进程还在继续。2、一个activity(A),start了新activity(B),B要展示一个popupwindow,这时,按下返回键,popupwindow消失了,但是B还在。我要的效果是:按下返回键,popupwindow消失,B做finish
代码讲解:
1、popupwindow
需要导包

import android.view.View.OnKeyListener;
View popupWindowView = LayoutInflater.from(context).inflate(R.layout.select_layout, null);
        popupWindow = new PopupWindow(popupWindowView, LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
        popupWindow.setAnimationStyle(R.style.SelectAnimationShow);

        // 菜单背景色
        ColorDrawable dw = new ColorDrawable(0x00ffffff);
        popupWindow.setBackgroundDrawable(dw);
        popupWindow.showAtLocation(LayoutInflater.from(context).inflate(R.layout.select_activity_layout, null),
                Gravity.TOP | Gravity.CENTER_HORIZONTAL, 0, 0);

        popupWindow.setFocusable(true);

        popupWindowView.setFocusable(true);
        popupWindowView.setFocusableInTouchMode(true);
        popupWindowView.setOnKeyListener(new OnKeyListener() {
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                //do something...
                return true;
            }
        });

**注:**PopupWindow的构造函数,一定,一定要用上面写的那种,其他的,没效果或者出错。原因不清楚。
这样写了以后,出现popupwindow时,点击返回键,popupwindow消失,activity-B也会走到onDestroy()这个生命周期


2、dialog

DialogInterface.OnKeyListener keylistener = new DialogInterface.OnKeyListener(){
        public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
            if (keyCode==KeyEvent.KEYCODE_BACK&&event.getRepeatCount()==0)
            {
                //do something...
                return false;
            }
            else
            {
                return true;
            }
        }
    } ;

最后

mWaitingDialog.setOnKeyListener(keylistener);
0
4

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:90666次
    • 积分:1669
    • 等级:
    • 排名:千里之外
    • 原创:71篇
    • 转载:5篇
    • 译文:5篇
    • 评论:21条
    文章分类
    最新评论