2016-06-27 6 views
0

アンドロイドにポップアップウィンドウを表示しているときにバックプレスイベントを処理したい。 私はこれが好きです。フラグメントで :ポップアップウィンドウを表示しているときに、BackPressedのオーバーライドメソッドが機能しない

@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初めてですか呼び出されませんでした。ボタンを2回押すのでない限り。 私はあなたがこれを使用してダイアログの[戻る]ボタンキーを処理するために必要な支援

+0

私はダイアログがバックを消費していると思いますキャンセルを押してください。これを見てくださいhttp://stackoverflow.com/questions/10346011/how-to-handle-back-button-with-in-the-dialog – X3Btel

+0

私はこのリンクを見ましたが、問題は私がpopupwindow forcursableを設定していることです。偽に設定する必要があります。 – Zijian

+0

あなたは何が起こると思いますか?ダイアログのonKeyリスナーを設定し、そこにcloseFlashPayメソッドを呼び出します – X3Btel

答えて

0

のおかげで、この

guideDialog.showAtLocation(getActivity().getWindow().getDecorView(), Gravity.CENTER, 0, 0); 

のように私のポップアップウィンドウを表示:

dialog.setOnKeyListener(new Dialog.OnKeyListener() { 
         @Override 
         public boolean onKey(DialogInterface arg0, int keyCode, 
              KeyEvent event) { 
          if (keyCode == KeyEvent.KEYCODE_BACK) { 
           dialog.dismiss(); 
           // you can call your onBackPress here 

          } 
          return true; 
         } 
        }); 
関連する問題