0

我想将弹出窗口用于我的 UI 活动。实际上,我的主要活动页面中有一个按钮,单击它应该像对话窗口一样打开。

在那个对话窗口中,我想在其中有两个其他按钮,单击它们应该为每次单击传递一些值**(没有窗口消失)**,如果在定义的时间内没有单击(超时)它应该消失并返回到主要活动。

我可以使用“Intent”来做到这一点,但我想在超时后用这个自动消失的对话框窗口来实现它。我怎样才能做到这一点。?请帮我解决这个问题。

提前致谢,

4

1 回答 1

0

首先声明一个全局变量,用于Handler从 更新 UI 控件Thread,如下所示 -

Handler mHandler = new Handler();

现在创建一个Thread并使用 while 循环使用线程的 sleep 方法定期执行任务。假设您有menu_bt您的视图对象,从您显示/打开的位置popup window比用于在定义的时间(即 10 秒)内没有点击时thread自动关闭。popup window

这里mpopup是 的对象PopupWindow

使用下面的代码在超时后消失对话框窗口(我用了 10 秒)。

希望它会帮助你。

menu_bt.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {

                View popUpView = getLayoutInflater().inflate(
                        R.layout.menu_popup, null); // inflating popup layout
                mpopup = new PopupWindow(popUpView, 400,
                        LayoutParams.WRAP_CONTENT, true); // Creation of popup
                mpopup.setAnimationStyle(android.R.style.Animation_Dialog);
                mpopup.showAsDropDown(menu_bt, 50, -10);
                Button btnOk = (Button) popUpView.findViewById(R.id.home);

                btnOk.setOnClickListener(new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        mpopup.dismiss(); // dismissing the popup with button click
                    }
                });
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        // TODO Auto-generated method stub
                        while (true) {
                            try {
                                Thread.sleep(10000);
                                mHandler.post(new Runnable() {

                                    @Override
                                    public void run() {
                                        // TODO Auto-generated method stub
                                        // automatic dismissing the popup after 10 seconds
                                        mpopup.dismiss();
                                    }
                                });
                            } catch (Exception e) {
                                // TODO: handle exception
                            }
                        }
                    }
                }).start();
            }
        });
于 2014-05-31T08:15:09.013 回答