Frage

Ich verwende einen ViewPager, um das Wischen in meiner Android-App zu implementieren.Ich möchte jedoch, dass das vorherige Fragment angezeigt wird, wenn der Benutzer die Zurück-Schaltfläche verwendet, anstatt die Aktivität zu beenden.Gibt es eine Möglichkeit, das zu tun?Danke Sebastian

War es hilfreich?

Lösung

Überschreiben Sie die Funktionalität Ihres Activity:

public class Activity extends Activity
{
    @Override
    public void onBackPressed()
    {
        // do stuff
        myFragment.onBackPressed();
    }
}

public class Fragment extends Fragment
{

    public void onBackPressed()
    {
        // do stuff
    }
}

Andere Tipps

Ich hatte ein ähnliches Problem, so habe ich es gelöst.Ich hatte einen ViewPager mit 6 Fragmenten und wollte den Überblick über den Seitenverlauf behalten und mit der Zurück-Schaltfläche im Verlauf rückwärts navigieren können.Ich erstelle eine java.util.Stack<Integer> Objekt hinzufügen, Fragmentnummern hinzufügen (außer wenn Sie die Zurück-Schaltfläche verwenden, siehe unten) und überschreiben onBackPressed() damit das zuletzt angezeigte Fragment angezeigt wird, anstatt den hinteren Stapel zu verwenden, wenn mein Verlaufsstapel nicht leer ist.

Sie möchten vermeiden, Elemente auf dem Stapel zu verschieben, wenn Sie die Zurück-Taste drücken. Andernfalls bleiben Sie zwischen zwei Fragmenten stecken, wenn Sie die Zurück-Taste weiterhin verwenden, anstatt den Vorgang schließlich zu beenden.

Mein Code:

MyAdapter mAdapter;
ViewPager mPager;
Stack<Integer> pageHistory;
int currentPage;
boolean saveToHistory;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mAdapter = new MyAdapter(getSupportFragmentManager());
    mPager = (ViewPager)findViewById(R.id.container);
    mPager.setAdapter(mAdapter);
    mPager.setOffscreenPageLimit(5);

    pageHistory = new Stack<Integer>();
    mPager.setOnPageChangeListener(new OnPageChangeListener() {

        @Override
        public void onPageSelected(int arg0) {
            if(saveToHistory)
                pageHistory.push(Integer.valueOf(currentPage));
        }

        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) {
        }

        @Override
        public void onPageScrollStateChanged(int arg0) {
        }
    });
    saveToHistory = true;
}

@Override
public void onBackPressed() {
    if(pageHistory.empty())
        super.onBackPressed();
    else {
        saveToHistory = false;
        mPager.setCurrentItem(pageHistory.pop().intValue());
        saveToHistory = true;
    }
};

Überschreiben der unteren Methode in Fragment-Aktivität sollte Ihr Problem lösen.

generasacodicetagpre.

Ich habe das gleiche Problem und folge diesem Schritt ( meine Antwort editiert - ich arbeite sicher für mich, versuche es einen Versuch )

In der Hauptaktivität, in der in AnsichtPager 3 Fragment vorhanden sind, erstellen Sie Stapel und Push- und Pop-Daten.

generasacodicetagpre.

und in der on backpressed in tätigkeit,

generasacodicetagpre.

hoffe das kann mir helfen oder msg mich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top