372 Stimmen

Android Fragment Griff zurück Taste drücken

Ich habe einige Fragmente in meiner Aktivität

[1], [2], [3], [4], [5], [6]

Und wenn ich die Zurück-Taste drücke, muss ich von [2] zu [1] zurückkehren, wenn das aktuelle aktive Fragment [2] ist, oder sonst nichts tun.

Wie kann man das am besten bewerkstelligen?

EDIT : Die Anwendung darf von [3] nicht zu [2] zurückkehren...[6]

2voto

Lalit Sharma Punkte 1112

Fügen Sie addToBackStack() zur Fragmenttransaktion hinzu und verwenden Sie dann den folgenden Code zur Implementierung der Rückwärtsnavigation für Fragmente

getSupportFragmentManager().addOnBackStackChangedListener(
    new FragmentManager.OnBackStackChangedListener() {
        public void onBackStackChanged() {
            // Update your UI here.
        }
    });

1voto

Ravi Punkte 271

Fügen Sie diesen Code in Ihre Aktivität ein

@Override

public void onBackPressed() {
    if (getFragmentManager().getBackStackEntryCount() == 0) {
        super.onBackPressed();
    } else {
        getFragmentManager().popBackStack();
    }
}

Und fügen Sie diese Zeile in Ihr Fragment vor commit() ein

ft.addToBackStack("Beliebiger Name");

1voto

tej shah Punkte 2904

In der Fragmentklasse diesen Code für das Back-Event einfügen:

 rootView.setFocusableInTouchMode(true);
        rootView.requestFocus();
        rootView.setOnKeyListener( new OnKeyListener()
        {
            @Override
            public boolean onKey( View v, int keyCode, KeyEvent event )
            {
                if( keyCode == KeyEvent.KEYCODE_BACK )
                {
                    FragmentManager fragmentManager = getFragmentManager();
                    fragmentManager.beginTransaction()
                            .replace(R.id.frame_container, new Book_service_provider()).commit();

                    return true;
                }
                return false;
            }
        } );

0voto

Devrath Punkte 39521

Die Überprüfung des Backstacks funktioniert einwandfrei


@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
    if (keyCode == KeyEvent.KEYCODE_BACK)
    {
        if (getFragmentManager().getBackStackEntryCount() == 1)
        {
            // DO something here since there is only one fragment left
            // Popping a dialog asking to quit the application
            return false;
        }
    }
    return super.onKeyDown(keyCode, event);
}

-2voto

Raj Kumar Punkte 668

In Ihre oncreateView()-Methode müssen Sie diesen Code schreiben und in die KEYCODE_BACk-Bedingung können Sie schreiben, welche Funktionalität Sie wünschen

View v = inflater.inflate(R.layout.xyz, container, false);
//Back pressed Logic for fragment 
v.setFocusableInTouchMode(true); 
v.requestFocus(); 
v.setOnKeyListener(new View.OnKeyListener() { 
    @Override 
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        if (event.getAction() == KeyEvent.ACTION_DOWN) {
            if (keyCode == KeyEvent.KEYCODE_BACK) {
                getActivity().finish(); 
                Intent intent = new Intent(getActivity(), MainActivity.class);
                startActivity(intent);

                return true; 
            } 
        } 
        return false; 
    } 
});

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X