2016-04-05 9 views
0
@Override 
public void onBackPressed() { 
    if (getSupportFragmentManager().getBackStackEntryCount() > 0) { 
     FragmentManager.BackStackEntry bSE = getSupportFragmentManager().getBackStackEntryAt(getSupportFragmentManager().getBackStackEntryCount() - 1); 
     Fragment frag = getSupportFragmentManager().findFragmentByTag(bSE.getName()); 
     if (frag instanceof BackButtonBlocker) 
     { 
      BackButtonBlocker callback = (BackButtonBlocker) frag; 
      callback.onBackPressed(); 
     } 
     else { 
      getSupportFragmentManager().popBackStack(); 
     } 
    } else { 
     super.onBackPressed(); 
    } 
} 

BackButtonBlocker-Schnittstelle ist für Rückruf. Mein Fragment implementiert BackButtonBlocker, aber manchmal tritt onBackPressed nicht auf (onKeyUp).Android-Aktivität onBackPressed nicht aufgerufen

wenn ich Navigationsschublade öffnen, onBackPressed und volle Logik funktioniert genau.

Warum sollte Aktivität den Fokus verlieren?

android.support.v4.app.Fragment

public interface BackButtonBlocker{ void onBackPressed();} 
+0

Ich habe Fragment unter Verwendung hinzugefügt ,, ersetzen ‚‘. – sofie

+0

Ich brauche Rückruf in Fragment, wenn Zurück-Taste gedrückt wird. (z. B. zum Öffnen eines beliebigen Dialogs ..) – sofie

Antwort

0

ich dieses Problem behoben, indem setFocusableInTouchMode(true); requestFocus(); auf Mainactivity Behälter Ansicht Hinzufügen

0

nehmen super.onBackPressed(); von else{}

0

Was ich getan habe ist, dass, ich habe jede Schnittstelle nicht implementiert zu handhaben zurück siehe unten gedrückt.

@Override 
public void onBackPressed() { 
    if (getDrawerLayout().isDrawerOpen(GravityCompat.START)) { 
     closeLeftMenu(); 
    } 
else { 

    if (getSupportFragmentManager().getBackStackEntryCount() > 1) { 
     super.onBackPressed(); 
    } else { 
     finish(); // Means it is home and you can exit it from here. 
    } 
}} 


When drawer is open just close it then use your code. 
+0

Dies ist kein Problem hier. Ich brauche einen Rückruf, wenn die Zurück-Taste gedrückt wird. (z. B. um jeden Dialog zu öffnen ..) – sofie

+0

Ich habe die Bedingung geändert, die Ihnen helfen könnte. –