Я хочу обработать обратное событие при показе всплывающего окна в android. Мне нравится это. В фрагменте:Метод переопределения onBackPressed не работает при показе всплывающего окна
@Override
public boolean onBackPressed() {
if (backPressStrategy == BACK_PRESS_PLAN_A) {
if (guideDialog != null) {
guideDialog.dismiss();
}
closeFlashPay(REQ_CLOSE_FLASH_PAY_AND_FINISH);
return true;
} else if (backPressStrategy == BACK_PRESS_PLAN_B) {
if (guideDialog != null) {
guideDialog.dismiss();
}
getActivity().finish();
return true;
} else {
return false;
}
}
И в деятельности, я делаю как этот
@Override
public void onBackPressed() {
PayBaseFragment contentFragment = (PayBaseFragment) getSupportFragmentManager().findFragmentByTag(TAG_CONTENT_FRAGMENT);
if (contentFragment != null && contentFragment.onBackPressed()) {
return;
}
super.onBackPressed();
}
Проблема, в первый раз, когда я нажал кнопку назад, popupwindow просто исчез и внахлёст onBackPressed метода не было вызвано. Если я не нажму кнопку два раза. я показываю мое всплывающее окно, как это
guideDialog.showAtLocation(getActivity().getWindow().getDecorView(), Gravity.CENTER, 0, 0);
Спасибо за помощь
Я думаю, что диалог потребляя обратно нажмите в качестве отмены. Посмотрите на это http://stackoverflow.com/questions/10346011/how-to-handle-back-button-with-in-the-dialog – X3Btel
Я видел эту ссылку, проблема в том, что я устанавливаю popupwindow forcursable. Должен установить false – Zijian
Im не 100% уверен, что вы ожидаете. Установите onKey прослушиватель в диалоговом окне и вызовите метод closeFlashPay – X3Btel