Ich weiß nicht, wie ich diese Frage formulieren soll.Wie kommt es manchmal, wenn ich den Zurück-Knopf drücke, gibt es mehr Aktivitäten, als es sein sollte?
Meine App hat einen einfachen ViewPager und Sie klicken auf etwas in einer dieser Seitenfragmente und es bringt Sie zu einer anderen Aktivität. Drücken Sie die Zurück-Taste und Sie gelangen zurück zum ViewPager. Drücken Sie erneut und die App wird geschlossen.
Aber manchmal, wenn ich die Zurück-Taste am ViewPager drücke, bringt es mich zurück zur anderen Aktivität, dann drücke ich zurück und es bringt mich zum ViewPager, und so weiter, bis die App endlich schließt. Mit anderen Worten, es ist, als ob es übrig gebliebene Instanzen des ViewPagers oder der anderen Aktivität im Backstack gibt (ich glaube, es heißt), aber ich habe keine Ahnung, wie oder warum das passiert.
Ich weiß auch nicht, wie man den Fehler reproduziert, der noch frustrierender ist. Die meiste Zeit funktioniert es wie erwartet, aber manchmal tauchen die übriggebliebenen Instanzen einfach aus dem Nichts auf, wenn ich zurück drücke.
Wie kann ich besser garantieren, dass wenn ich die Zurück-Taste der anderen Aktivität drücke, es zurück zum ViewPager geht, und wenn ich den ViewPager zurück drücke, schließt es die App?
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home: //called when I press back button on the phone or the back-arrow on the toolbar
onBackPressed();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
//and then usually that's all I have, but in one particular Activity, I do override the function:
@Override
public void onBackPressed() {
if (some conditions are met) {
finish();
super.onBackPressed();
}
else {
//display some error message
}
}
Hier ist, wie ich meine Aktivitäten starten:
public void launchSomeActivity() {
Intent intent = new Intent(getActivity(), ActivityName.class);
intent.putExtra(etc etc etc);
startActivityForResult(intent, REQUEST_CODE);
}
Sie rufen 'finish()', wenn Sie neue Aktivitäten starten? –
Ich habe Code zum Beitrag hinzugefügt –
FInish() und super.onBackPress() sind die gleichen verwenden Sie eine dieser Methoden. – ramji