432 Stimmen

Neustart der Aktivität in Android

Wie starte ich ein Android-Gerät neu? Activity ? Ich habe Folgendes versucht, aber die Activity einfach aufgibt.

public static void restartActivity(Activity act){

        Intent intent=new Intent();
        intent.setClass(act, act.getClass());
        act.startActivity(intent);
        act.finish();

}

3voto

Amsheer Punkte 6886
public void onRestart() {
    super.onRestart();
    Intent intent=new Intent();
    intent.setClass(act, act.getClass());
    finish();
    act.startActivity(intent);
}

versuchen, dies zu nutzen.

3voto

Sandy Punkte 2242

Der folgende Code gilt für die API-Stufen 5 und höher. Wenn Ihre Ziel-API niedriger ist als diese, erhalten Sie etwas, das dem Code von EboMike sehr ähnlich ist.

intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
overridePendingTransition(0, 0);

1voto

Dimitar Dimitrov Punkte 15634

Wenn Sie die letzte Zeile entfernen, erstellen Sie eine neue act Aktivität, aber Ihre alte Instanz ist noch aktiv.

Müssen Sie die Aktivität neu starten, z. B. wenn die Ausrichtung geändert wird (d. h. Ihr Status wird gespeichert und an onCreate(Bundle) )?

Wenn dies nicht der Fall ist, besteht eine mögliche Lösung darin, eine zusätzliche Dummy-Aktivität zu verwenden, die von der ersten Aktivität aus gestartet wird und deren Aufgabe es ist, eine neue Instanz zu starten. Oder verzögern Sie einfach den Aufruf von act.finish() nachdem die neue gestartet wurde.

Wenn Sie den größten Teil des Zustands speichern müssen, geraten Sie in ziemlich tiefe Gewässer, denn es ist nicht trivial, alle Eigenschaften Ihres Zustands an die neue Instanz weiterzugeben, insbesondere ohne dass Ihr alter Kontext/Ihre alte Aktivität verloren geht.

Bitte geben Sie an, was Sie zu tun versuchen.

-1voto

Mihir Trivedi Punkte 1325

Wenn Sie von einem Fragment aus aufrufen, müssen Sie den folgenden Code eingeben.

Intent intent = getActivity().getIntent();
getActivity().finish();
startActivity(intent);

-1voto

MicroRJ Punkte 165

Ich mache das so.

        val i = Intent(context!!, MainActivity::class.java)
        i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
        startActivity(i)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X