2010-04-22 32 views
6

So habe ich ein riesiges Labyrinth von Aktivitäten in meiner Anwendung. Was ich tun muss, ist, dass der Aktivitätsverlauf gelöscht werden sollte, wenn sich der Benutzer beim System anmeldet. Ich kann Finish() nur verwenden, wenn ich eine neue Aktivität starte, weil ich möchte, dass die Aktivitäten einen Verlauf haben, bis sich der Benutzer anmeldet. Ich habe mit den verschiedenen Flags experimentiert, als ich eine Aktivität startete, aber ich hatte keinen Erfolg. Irgendwelche Ideen?Aktivität starten und Aktivitätsverlauf löschen

Cheers,

Antwort

2

Ich könnte auch zeigen die hax ich bin derzeit mit meinem Problem zu lösen. Auf der "pre angemeldet" Aktivitäten, ich dies im Manifest gesetzt haben:

android:noHistory="true" 

in jeder Aktivität Dann habe ich diesen Code:

public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     Intent intent = new Intent(MyActivity.this, ParentActivity.class); 
     intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 
     startActivity(intent); 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 

} 

Die FLAG_ACTIVITY_NO_ANIMATION nur auf Telefonen mit API-Ebene arbeitet 5 oder höher, aber was es tut ist, dass stattdessen auf der "offene neue Aktivität" -Animation die "zur vorherigen Aktivität zurückgehen" -Animation gespielt wird (zumindest auf dem Droiden und Nexus). Dies verhindert das verwirrende Erscheinen, dass eine neue Aktivität gestartet wird, wenn der Benutzer die Zurück-Taste drückt.

Diese Lösung ist nicht perfekt. Bei Telefonen mit einem API-Level niedriger als 5 werden die Animationen falsch. Außerdem ist es nicht super ordentlich und benötigt mehr Code als ich bevorzuge. Dennoch funktioniert es ...

+0

Diese total für mich gearbeitet, wenn „zurück“ zu einer früheren Tätigkeit zu simulieren versuchen (das heißt, natürlich, nicht wirklich Dort). Vielen Dank! Ich wollte dies mit den Standard-Animations-IDs erreichen, aber zu meiner Überraschung sind diese nicht öffentlich verfügbar. Stelle dir das vor. – dmon

+1

Wenn Sie tatsächlich das KeyDown verwenden, sollten Sie wahrscheinlich True zurückgeben, anstatt das Super – njzk2

+0

True, ich habe meine Antwort korrigiert. – pgsandstrom

1

können Sie 65536 statt Intent.FLAG_ACTIVITY_NO_ANIMATION für frühere Versionen verwenden

Verwandte Themen