2011-01-03 9 views
1

Ich rufe eine Aktivität von sich selbst aus - im Grunde habe ich eine Liste von neuen Storys und zwei Filter-Buttons, die bei einem Klick die Aktivität mit einer beabsichtigten Absicht neu starten, die die Nachrichten ändert.Android Activity Update

Wenn ich die App laufen, funktioniert es, aber für eine Sekunde bekomme ich die alte Activity UI, während die App liest aus dem neuen XML-Feed und dann die UI-Updates. Gibt es eine Möglichkeit, dies zu verhindern und die Aktivität wieder kalt zu starten?

hier ist der Code, den ich zur Zeit an die OnClickListener bin Befestigung

public void openFootballNews(View v) { 
Intent i = new Intent(this, News_Landing.class); // News_landing class is the class this code is in 
Bundle bundle = new Bundle(); 
    bundle.putString("code", "football"); // this, if set, changes the xml feed to read 
    i.putExtras(bundle); 
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    this.onCreate(null); //this has halved the time the old UI is on the screen for but I cant get rid of it completely 
    startActivity(i); 
} 

jede Hilfe wäre toll, danke!

+2

hmm Anruf beenden() auf die erste Aktivität, wenn Sie damit fertig sind? – schwiz

+1

Wiedereröffnung der "Aktivität" scheint wie eine Verschwendung. Es wäre wahrscheinlich schneller und weniger verwirrend für den Benutzer, die Geschichten im Feed zu aktualisieren, anstatt die gesamte "Aktivität" wieder zu öffnen. – Computerish

+0

danke, ich würde die Geschichten aktualisieren, aber ich kann getView in meinem benutzerdefinierten Adapter nicht erscheinen, um ein zweites Mal zu laufen. – Muller

Antwort

3

Das Starten einer Aktivität von sich selbst macht wenig Sinn (es sei denn, Sie wollen etwas esoterisch rekursiv machen;)). Außerdem mag ich mich irren, aber ich glaube, dass die Aktivitäten in einem Stapel aufbewahrt werden, so dass Sie, wenn Sie zwischen Nachrichten umblättern, eine fast identische Aktivität nach der anderen aufbauen. Ich würde auch denken, onCreate() von Hand anzurufen ist schlechte Form.

Bräuchte alle Ihre Code zu sehen, aber meine Vermutung ist, dass Sie Ihren Feed lesen und Ihre Liste innerhalb onCreate() erstellen, und dass Ihre beste Wette ist, dass in einem openNews(String sport) Methode Refactoring, die Sie einmal rufen in onCreate() und wieder in deinen Zuhörern.