ハードウェアメニューキーを押すと表示されるポップアップを実装しました。ここで、メニューキーをもう一度押したときにポップアップを閉じたいと思います。
私はこれを試しました
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_MENU) {
if (pw.isShowing()) {
pw.dismiss();
} else {
openpopup();
}
return true;
}
return super.onKeyDown(keyCode, event);
}
これがオープンポップアップメソッドです
public void openpop() {
View view1 = getCurrentFocus();
showpopup(view1);
}
これがshowpopupメソッドです
public void showpopup(View view) {
pw.setTouchable(true);
pw.setFocusable(true);
pw.setTouchInterceptor(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_OUTSIDE) {
pw.dismiss();
return true;
}
return false;
}
});
try {
pw.setWidth(WindowManager.LayoutParams.WRAP_CONTENT);
pw.setHeight(WindowManager.LayoutParams.WRAP_CONTENT);
pw.setOutsideTouchable(false);
pw.setContentView(popupView);
pw.showAsDropDown(view, 0, 0);
popUpShowed = true;
} catch (Exception e) {
Log.e("SAMPLE", "Exception", e);
}
}
しかし、メニューを押してもポップアップは消えません。
何が問題なのですか?どういうわけかこれを成し遂げる必要があります。私を助けてください。