我想将弹出窗口用于我的UI活动。 实际上,我的主活动页面中有一个按钮,单击该按钮应该像对话窗口一样打开。
在那个对话窗口中,我想在其中有两个其他按钮,点击后应该为每次点击传递一些值**(没有窗口消失)**并且如果在规定时间内没有点击(时间 - 它应该消失并返回主要活动。
我可以使用" Intent"但我希望在超时后使用这个自动消失的对话窗口来实现它。我怎样才能做到这一点。? 请帮我解决这个问题。
提前致谢,
答案 0 :(得分:0)
首先为Handler
声明一个全局变量,以便从Thread
更新UI控件,如下所示 -
Handler mHandler = new Handler();
现在创建一个Thread
并使用while循环来定期使用线程的sleep方法执行任务。
假设您显示/打开menu_bt
的位置有popup window
视图对象,而使用thread
在定义时间内没有点击时自动关闭popup window
,即10秒
此处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();
}
});