最初に、以下のようにHandler
から UI コントロールを更新するための 1 つのグローバル変数を宣言します。Thread
Handler mHandler = new Handler();
ここで作成Thread
し、while ループを使用して、スレッドのスリープ メソッドを使用して定期的にタスクを実行します。定義された時間、つまり 10 秒間クリックがない場合に自動を閉じるために使用するよりもmenu_bt
、表示/開く場所からビューのオブジェクトがあるとします。popup window
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();
}
});