2016-06-27 12 views
0

Ich möchte das Backpress-Ereignis behandeln, wenn ein Popup-Fenster in Android angezeigt wird. Ich mag das. Im Fragmente:Die Override-Methode onBackPressed funktioniert nicht, wenn Popup-Fenster angezeigt wird

@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; 
    } 
} 

Und in der Aktivität, das tue ich wie diese

@Override 
public void onBackPressed() { 
    PayBaseFragment contentFragment = (PayBaseFragment) getSupportFragmentManager().findFragmentByTag(TAG_CONTENT_FRAGMENT); 
    if (contentFragment != null && contentFragment.onBackPressed()) { 
     return; 
    } 
    super.onBackPressed(); 
} 

Das Problem ist, wenn das erste Mal, dass ich Taste gedrückt zurück, die popupwindow nur Verfahren und die Überschreibung onBackPressed verschwunden wurde nicht aufgerufen. Es sei denn, ich drücke die Taste zweimal. Ich zeige meine Popup-Fenster wie dieses

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

Vielen Dank für Hilfe

+0

Ich denke, der Dialog der Rückseite verbraucht als Abbrechen drücken. Schauen Sie sich http://StackOverflow.com/Questions/10346011/How-to-Handle-Back-Button-with-in-the-dialog – X3Btel

+0

Ich sah diesen Link, das Problem ist, dass ich das Popup-Fenster forcurable gesetzt. Sollte es falsch gesetzt werden – Zijian

+0

Ich bin nicht 100% sicher, was Sie erwarten zu passieren. Setzen Sie onKey Listener im Dialog und rufen Sie dort die Methode closeFlashPay auf – X3Btel

Antwort

0

Sie müssen sich mit dieser die Zurück-Taste Taste Ihres Dialog behandeln:

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; 
         } 
        });