2016-08-11 5 views
2

Ich erstellen Beispiel App, um einige Daten zu Benutzer beim Starten bestimmter Aktivität Benutzer und klicken Sie auf bestimmte Schaltfläche die App neues Fragment starten (nur Fragment hinzugefügt Aktivität für jetzt) ​​mein Problem ist, wenn Benutzer Klicken Sie auf das Fragment und die Aktivität entfernt und gehen Sie zu übergeordneten Aktivität. mit diesem Code zu tun, dassEntfernen Sie nur Fragment beim Zurück drücken

android.support.v4.app.FragmentManager fragmentManager = ((FragmentActivity) context).getSupportFragmentManager(); 
fragmentManager.popBackStack(); 

auch ich den gleichen Code in einer anderen Aktion, wenn Benutzer klicken Sie in bestimmten Schaltfläche Fragmente und wieder richtig zu verwenden.
Kann mir jemand helfen zu lösen, dass

+0

Griff onBackPresse() –

+0

das Fragment an der Rückseite Stapel hinzufügen und es wird automatisch arbeiten, werden Sie nicht dann über den Rücken gedrückt kümmern. –

+0

Es gibt eine Zahl oder verwandte Frage in der Seitenleiste [versuchen Sie dies] (http://stackoverflow.com/a/7992472/2900127) – 7geeky

Antwort

0

Überschreibung onBackPressed() zu stapeln hinzugefügt und entfernen Fragment. Der Backstack für Fragmente funktioniert anders, da er Transaktionsfragmente nicht speichert. Sie können also kein Fragment zurückspringen, sondern eine Transaktion

0

nur Fragment entfernen Sie dieses Fragment in addToBackStack(TAG) hinzufügen müssen, so dass, wenn Sie drücken es nur Fragment Popout zurück, die

6

Fügen Sie Fragmente zum Backstack hinzu, wenn Sie sie erstellen und überschreiben Sie onBackPressed in Ihrer Aktivität.

Um Fragment

FragmentManager mFragmentManager = ((FragmentActivity) context).getSupportFragmentManager(); 
FragmentTransaction ft = mFragmentManager.beginTransaction(); 
ft.addToBackStack("tag of fragment"); 
ft.add("your container id", fragment); 
ft.commit(); 

onBackPress

@Override 
public void onBackPressed() { 
    if (mFragmentManager.getBackStackEntryCount() > 0) 
     mFragmentManager.popBackStackImmediate(); 
    else super.onBackPressed(); 
} 
0

Dies ist Arbeit für mich ein Fragment in einem Fragment zu behandeln backpressin entfernen Backstack hinzuzufügen.

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

    if (getView() == null) { 
     return; 
    } 

    getView().setFocusableInTouchMode(true); 
    getView().requestFocus(); 
    getView().setOnKeyListener(new View.OnKeyListener() { 
     @Override 
     public boolean onKey(View view, int keyCode, KeyEvent keyEvent) { 

      if (keyEvent.getAction() == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK) { 

       Toast.makeText(getActivity(), "Clicked Back", Toast.LENGTH_SHORT).show(); 
       getActivity().finish(); 
       return true; 
      } 
      return false; 
     } 
    }); 
} 
Verwandte Themen