2016-05-15 15 views
0

Ich habe eine PreferenceActivity implementiert und ich erlaube dem Benutzer, das Thema der App zu ändern. Wenn der Schalter für diese Einstellung umgedreht wird, passiert zunächst nichts.Welche Methode ausgeführt wird auf Up-Taste gedrückt

Wenn die Up button gedrückt wird, bin ich auf die übergeordnete Aktivität und es lädt das Thema neu, um das neue Thema zu verwenden. Wenn ich jedoch immer noch in der SettingsActivity bin und die Back Schaltfläche drücke, komme ich zurück zur MainActivity, aber das neue Theme wird nicht angewendet. Ich nehme an, MainActivity lädt onCreate() in diesem Fall nicht.

würde ich SettingsActivity in diesem Verhalten override the Back Schaltfläche nur mag und ich weiß, wie man, aber ich weiß nicht, welche Methode auszuführen, um die Up-Taste gedrückt Verhalten zu imitieren.

Irgendwelche Ideen?

+0

Was meinst du mit dem 'up button'? Ist es eine benutzerdefinierte Schaltfläche, die Sie hinzugefügt haben? – AkashBhave

+0

Es ist der Pfeil nach oben, der den Home-Button ersetzt. Wenn Sie ihn drücken, gelangen Sie zur übergeordneten Aktivität. – iBobb

Antwort

1

Wenn die übergeordnete Aktivität etwas ist, über das Sie die Kontrolle haben, überschreiben Sie einfach die Zurück-Schaltfläche, drücken Sie. Sie können es so tun:

@Override 
public void onBackPressed() { 
    // Replace "ParentActivity.class" with the name of your parent activity 
    Intent parentIntent = new Intent(getApplicationContext(), ParentActivity.class); 
    startActivity(parentIntent); 
} 

Der obige Code sollte die Schaltfläche zurück überschreiben und Ihnen das gewünschte Ergebnis geben.

+0

haha ​​wow danke, ich wusste nicht, dass es so einfach sein könnte ... nur ein wenig offtopic Klärung, wann verwenden wir finish(); zusammen mit startActivity? oder verwenden wir nur finish(), wenn wir eine laufende Aktivität hinter diesem haben? – iBobb

+1

Froh, dass es geholfen hat! Um Ihre Frage zu beantworten, ruft die 'finish()' Aktivität grundsätzlich die 'onDestroy()' Methode der Aktivität auf, die Ihre Absicht beabsichtigt. Sie müssen also wirklich nicht beenden, weil es nur die Aktivität stoppen würde. – AkashBhave

+0

Leider führte dies zu einem fiesen Bug. Wenn ich von MainActivity in Einstellungen gehe und die Zurück-Taste drücke, wird MainActivity erneut gestartet. Wenn ich die Zurück-Taste drücke, werde ich wieder zu den Einstellungen gebracht. Zurück-Taste> Hauptbildschirm. Zurück Schaltfläche> Einstellungen Bildschirm ... und es ist in dieser Schleife fest. – iBobb