2014-12-31 7 views
6

Ich habe Fragment Activity Mit contatin Navigation drawer.Nach dem Klicken auf Navigation Schublade Element öffnen Sie ein Fragment 1, Fragment 2, Fragment 3. und dann nach dem Button klicken Ereignis in Fragment 1 öffnen neues Fragment 4.Wie handle backPresse mit Fragment

ich will zurück Tastendruck-Ereignis behandeln, wie kann ich dies tun auf Fragment 4?, nachdem Schlüssel in Fragment 4 i 1.

enter image description here

+0

, wenn Sie tun nicht Ding das muss passiert sein, Hexe Fragment nach BackPress geöffnet? –

+0

http://StackOverflow.com/Questions/7992216/android-Fragment-Handle-Back-Button-Press – duggu

+0

nein nach Backpress es öffnen ein mein Zuhause-Layout, die 'Fragment 2' ist es als Hauptfragment in Navigation Schublade gesetzt – kosala

Antwort

19

Fragmente Backstack hinzufügen zurück Fragment gehen wollen, klicken zurück. Vor commit(), um die Transaktion, verwenden addToBackStack() -Methode dh

addToBackStack("Some String").commit(); 

und in onBackPressed()

@Override 
public void onBackPressed() { 
    if (getSupportFragmentManager().getBackStackEntryCount() > 0) { 
     getSupportFragmentManager().popBackStack(); 
    } else { 
     this.finish(); 
    } 
} 
+0

geöffnet werden müssen Sie dieses 'getFragmentManager (arithmetisches Mittel) \t \t \t .beginTransaction() \t \t \t .replace (R.id.content_frame , \t \t \t \t \t Eintrag_Account.newInstance(), Eintrag_Account.TAG) .addToBackStack() \t \t \t .commit(); 'in meinem' Fragment 1' aber es sagt 'Die Methode addToBackStack (String) im Typ FragmentTransaction ist nicht anwendbar für die arguments()' – kosala

+5

In Aktivität onBackPressed() Methode if (fm. getBackStackEntryCount()> 0) {pop das fragment} else {super.onBackPressed();} – sandeepmaaram

+0

was meinst du mit '{pop das fragment}' – kosala

4

Aufschalten onBackPress() -Methode und überprüfen, ob Ihre Bruchstück Manager Backstack Eintrag ist> 0, wenn es hat mehr als 0, als es sonst Ihre Aktivität zu stapeln tun popback beenden ..

if(getFramentManager().getBackStackEntryCount()>0){ 
     // popback statck. 
} 
else{ 
    // finish your activity. 
} 

vergessen sie nicht Ihr Bruchstück zu Backstack hinzuzufügen Fragment Hierarchie zu pflegen ..

fragTransacion.addToBackStack(TAG); 
+0

Wie kann ich Fragment zu BackStack hinzufügen, um die Fragmenthierarchie beizubehalten? – kosala

+0

@Sameera überprüfen Sie meine bearbeitete Antwort –

+0

es funktioniert. Vielen Dank. – kosala

5

Ihr Codefragment für das Hinzufügen wie zu Backstack sollte:

getFragmentManager() .beginTransaction() .replace(R.id.content_frame, Entry_Account.newInstance(), Entry_Account.TAG).addToBackStack("Some string") .commit(); 

Auf Dann onBackPressed Methode Aktivitäten, diese Schnipsel verwenden:

@Override 
public void onBackPressed() { 
if(getFramentManager().getBackStackEntryCount()>0){ 
     // popback statck. 
} 
else{ 
    // finish your activity. 
} 
} 
+0

'@Override public void onBackPressed() {if (getSupportFragmentManager(). GetBackStackEntryCount()> 0) {getSupportFragmentManager(). PopBackStack(); } else {this.finish(); }} ' – kosala