2016-11-16 6 views
0

Ich habe eine Abfrage und brauche Hilfe, es neu zu bewerten.Zurück Drücken Sie aus dem Fragment

Ich habe zwei Fragmente in meiner App, sagen wir Fragment A und Fragment B, wenn meine App geöffnet wird Fragment A wird zuerst angezeigt (und es enthält eine Schaltfläche beim Drücken der Taste ruft Fragment B). Jetzt enthält Fragment B eine Schaltfläche (Sagen wir Knopf C), während Knopf C gedrückt wird, erscheint das Pop-Fenster.

Problem i bin vor, wenn ich drücken Sie aus dem Fragment B, die popwindow entlasse zurück, dass feine Arbeit, aber es Fragment A. Laden

Ich will nicht Fragment A auf Zurück Drücken laden. Bei Zurück Drücken, wenn das Pop-Fenster angezeigt wird, sollte es in Fragment B verschwinden und bleiben und wenn Pop-Fenster nicht angezeigt wird, sollte es aus der App gehen.

Ich habe versucht: Ich habe die Schnittstelle in Fragment B erstellt und die Instanz des Popfensters in Activity abgerufen.

@Override 
    public void onBackPressed() { 
     super.onBackPressed(); 

     if(popupWindow!=null && popupWindow.isShowing()){ 
      popupWindow.dismiss(); 
      backpopwindow.dismiss(); 
     } 
    } 

    @Override 
    public void onHandleRequest(PopupWindow popupWindow, PopupWindow backpopwindow, String fragmentName) { 
     if (fragmentName != null) { 
      this.fragmentName = fragmentName; 
      if (popupWindow != null) { 
       this.popupWindow = popupWindow; 
       this.backpopwindow = backpopwindow; 

      } 
     } 
    } 
+1

verstecken super.onBackPressed(); und Renn. –

+0

sonst Bedingung Aufruf getActivity(). Finish(); .Es sollte funktionieren. –

Antwort

2
@Override 
public void onBackPressed() { 

    if(popupWindow!=null && popupWindow.isShowing()){ 
    popupWindow.dismiss(); 
    backpopwindow.dismiss(); 
    } else { 
    finish(); 
    } 
} 

Dies wird die popupWindow schließen, wenn es sichtbar ist, oder aber die Aktivität beenden

1

du versuchen kann, wird es auch für die Rück Stapel mit Fragment B und Pop-up-Fenster arbeiten.

@Override 
public void onBackPressed() { 
    //super.onBackPressed(); 

    if(popupWindow!=null && popupWindow.isShowing()){ 
     popupWindow.dismiss(); 
     //backpopwindow.dismiss(); 
     return; 
    } 

    if (getSupportFragmentManager().getBackStackEntryCount() > 0) 
    { 
     getSupportFragmentManager().popBackStack(); 

    } 
    else 
    { 
     finish(); 
    } 
} 
Verwandte Themen