Aktuelle Aktivität in Android neu laden [duplicate]
Lesezeit: 4 Minuten
Android_Code_Chef
Ich meine Android-App, um ihre aktuelle Aktivität auf ButtonClick zu aktualisieren.
Ich habe eine Schaltfläche oben im Aktivitätslayout, die die Arbeit erledigen sollte. Wenn ich auf die Schaltfläche klicke, sollte die aktuelle Aktivität neu geladen werden, genau wie bei einem Neustart des Geräts.
Wie kann ich das machen?
[for API before 11 you cannot use recreate(). I solved in this way:][1] [1]: stackoverflow.com/questions/2486934/…
– AA
4. August 2014 um 13:28 Uhr
Es wurde hier bereits mit einem guten Ansatz beantwortet: stackoverflow.com/a/6283098/8713823
Ich hatte diesen Code bei mir, aber er zeigt im Grunde eine Animation, dass wir uns von einer Aktivität zur nächsten bewegen. Und auch meine bisherige Tätigkeit lebt noch. Ich möchte, dass alles neu geladen werden soll.
Meine listView wird mit dieser Methode nicht aktualisiert. Wieso den?
– Achtung
4. April 2018 um 6:37 Uhr
Intent intent = new Intent(YourActivity.this,YourActivity.class); finish(); startActivity(intent); Beste Lösung, es wird alles auffrischen. ofc Wenn Sie einige Daten speichern möchten, können Sie Shared Pref verwenden, bevor Sie die Seite beenden @Otra @Shine
– Exotisch
15. Juni 2020 um 14:13 Uhr
gregory561
Sie können dies versuchen
finish();
startActivity(getIntent());
Diese Frage wurde bereits gestellt: Wie starte ich eine Android-Aktivität neu?
Ich hatte diesen Code bei mir, aber er zeigt im Grunde eine Animation, dass wir uns von einer Aktivität zur nächsten bewegen. Und auch meine bisherige Tätigkeit lebt noch. Ich möchte, dass alles neu geladen werden soll.
– Android_Code_Chef
1. Juli 2011 um 12:38 Uhr
Aus Ihrer eigenen Frage “Es sollte neu starten und alle Instanzen der vorherigen aktuellen Aktivität löschen.” Das ist die Antwort von @Greg
– Blundell
1. Juli 2011 um 12:41 Uhr
Wenn Sie die Animation zum Laden der Aktivität nicht möchten. Finden Sie heraus, was Sie aktualisieren möchten, und führen Sie dies manuell durch.
– Blundell
1. Juli 2011 um 12:41 Uhr
Sudara
In einer Aktivität können Sie anrufen recreate() um die Aktivität “neu zu erstellen” (API 11+)
Funktioniert wie am Schnürchen, danke für die Lösung!
– hetsgandhi
3. Oktober 2019 um 8:47 Uhr
Dieser funktioniert! Es hat keine Animation!
– Shark Deng
14. Oktober 2019 um 8:35 Uhr
großartig … aber können wir die Blackout-Animation während der Neuerstellung entfernen?
– Parthan_akon
27. August 2021 um 6:33 Uhr
Dies ist eine Refresh-Button-Methode, aber sie funktioniert gut in meiner Anwendung. in finish() killst du die Instanzen
public void refresh(View view){ //refresh is onClick name given to the button
onRestart();
}
@Override
protected void onRestart() {
// TODO Auto-generated method stub
super.onRestart();
Intent i = new Intent(lala.this, lala.class); //your class
startActivity(i);
finish();
}
das ist, was für mich funktioniert hat, wie gesehen hier.
Verwenden Sie es einfach oder fügen Sie es einem statischen Klassenhelfer hinzu und rufen Sie es einfach von überall in Ihrem Projekt auf.
/**
Current Activity instance will go through its lifecycle to onDestroy() and a new instance then created after it.
*/
@SuppressLint("NewApi")
public static final void recreateActivityCompat(final Activity a) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
a.recreate();
} else {
final Intent intent = a.getIntent();
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
a.finish();
a.overridePendingTransition(0, 0);
a.startActivity(intent);
a.overridePendingTransition(0, 0);
}
}
Nachdem Sie dies gesetzt haben … startet sich die Aktivität immer wieder neu.
– Abu Ruqaiyah
2. Juni 2016 um 12:09 Uhr
@AbuRuqaiyah stellen Sie sicher, dass Sie dies in einem onClickListener oder einem beliebigen Trigger aufrufen. Stellen Sie außerdem sicher, dass Sie diese Funktion nicht aus einer Schleife oder einer Funktion aufrufen, die möglicherweise bei jedem Start Ihrer App ausgeführt wird – ich hoffe, Sie haben den Vorgang verstanden
– Wilhelm
26. September 2016 um 19:00 Uhr
Danke, das ist für mich gearbeitet
– Krupa Kakkad
4. Januar 2017 um 13:23 Uhr
CommonsWare
Es sollte neu starten und alle Instanzen der vorherigen aktuellen Aktivität löschen.
Nein, sollte es nicht.
Es sollte seine vorhandenen Daten aktualisieren (z. requery() das Cursor). Dann gibt es keine “Instanzen früherer aktueller Aktivitäten”, um die man sich Sorgen machen müsste.
Nachdem Sie dies gesetzt haben … startet sich die Aktivität immer wieder neu.
– Abu Ruqaiyah
2. Juni 2016 um 12:09 Uhr
@AbuRuqaiyah stellen Sie sicher, dass Sie dies in einem onClickListener oder einem beliebigen Trigger aufrufen. Stellen Sie außerdem sicher, dass Sie diese Funktion nicht aus einer Schleife oder einer Funktion aufrufen, die möglicherweise bei jedem Start Ihrer App ausgeführt wird – ich hoffe, Sie haben den Vorgang verstanden
[for API before 11 you cannot use recreate(). I solved in this way:][1] [1]: stackoverflow.com/questions/2486934/…
– AA
4. August 2014 um 13:28 Uhr
Es wurde hier bereits mit einem guten Ansatz beantwortet: stackoverflow.com/a/6283098/8713823
– Islam Alshnawey
3. November 2021 um 8:21 Uhr