2016-05-01 8 views
0

Ich habe derzeit verschiedene Fragmente, die gleiche Aktivitäten öffnen können. Gibt es eine Möglichkeit, die Nach-Oben-Navigation-Schaltfläche so zu implementieren, dass sie, wenn sie gedrückt wird, zu dem Fragment zurückkehrt, von dem sie stammt, anstatt dass sie immer das Startfragment ist?Android Navigation in Fragment Pager Adapter

Ich habe ein Bild angehängt, um dies besser zu veranschaulichen.

enter image description here

Die Rückseite drücken Sie die Taste funktioniert gut, nur nicht sicher, nav-Taste auf der nach oben.

Danke.

Antwort

0

Meine Lösung ist vielleicht nicht elegant, aber irgendwie effektiv.

Zuerst sollten Sie in die Absicht das Tag des Fragments eingeben, das die neue Aktivität startet. Nachdem Sie die Aktivität gestartet haben, rufen Sie in der MainActivity finish(); auf.

In der neuen Aktivität überschreiben Sie die onOptionsItemSelected Methode, so dass es eine neue Absicht erstellt und die MainActivity startet. Natürlich werden Sie das Tag des Fragments erneut in der Absicht speichern.

// Handles back button in ActionBar 
@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case android.R.id.home: 
      Intent intent = new Intent(getApplicationContext(), MainActivity.class); 
      intent.putExtra("lastFragment",value); 
      startActivity(intent); 
      finish(); 
      break; 
    } 
    return true; 
} 

Schließlich sollte die MainActivity überprüfen, ob die Absicht null ist. Wenn nicht, holen Sie sich das Tag des Fragments und laden Sie es.

Das Endergebnis ist, dass der Benutzer zu dem Fragment aufgefordert wird, das die neue Aktivität aufgerufen hat. Obwohl ich mir sicher bin, dass es bessere Möglichkeiten gibt, dies zu tun.

1

In Ihrem Fragmente ...

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case android.R.id.home: 
      if (getActivity() != null) { 
       getActivity.onBackPressed(); 
      } 
      break; 
    } 
    return true; 
} 

in Ihrer Tätigkeit ...

@Override 
public void onBackPressed() { 
    if (viewPager != null && viewPager.getCurrentItem() != 0) { 
     viewPager.setCurrentItem(0); 
    } 
}