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();

}

15voto

Codeversed Punkte 8927

Nun, das ist nicht aufgelistet, sondern eine Kombination von einigen, die bereits gepostet ist:

if (Build.VERSION.SDK_INT >= 11) {
    recreate();   
} else {
    Intent intent = getIntent();
    finish();
    startActivity(intent);
}

14voto

OhhhThatVarun Punkte 3381

Wenn jemand nach einer Kotlin-Antwort sucht, braucht er nur diese Zeile.

Fragment

startActivity(Intent.makeRestartActivityTask(activity?.intent?.component))

Tätigkeit

startActivity(Intent.makeRestartActivityTask(this.intent?.component))

4voto

The4thIceman Punkte 3361

In Verbindung mit merkwürdiges SurfaceView-Lebenszyklusverhalten mit der Kamera . Ich habe festgestellt, dass recreate() sich nicht gut mit dem Lebenszyklus von SurfaceViews verhält. surfaceDestroyed wird nie während des Erholungszyklus aufgerufen. Es wird nach onResume (seltsam) aufgerufen, an welchem Punkt meine SurfaceView zerstört wird.

Die ursprüngliche Methode, eine Aktivität neu zu erstellen, funktioniert gut.

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

Ich kann nicht genau herausfinden, warum das so ist, aber es ist nur eine Beobachtung, die hoffentlich andere in der Zukunft leiten kann, weil es meine Probleme behoben hat, die ich mit SurfaceViews hatte

4voto

Achal Dave Punkte 3699

Es gibt einen Trick, der bei jeder Aktivität, auch bei der Hauptaktivität, funktionieren sollte.

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);

Wenn sich die Ausrichtung ändert, erstellt Android in der Regel Ihre Aktivität neu (es sei denn, Sie setzen sie außer Kraft). Diese Methode ist nützlich für Drehungen um 180 Grad, wenn Android Ihre Aktivität nicht neu erstellt.

4voto

Rajesh Peram Punkte 990

Die Lösung für Ihre Frage lautet:

public static void restartActivity(Activity act){
    Intent intent=new Intent();
    intent.setClass(act, act.getClass());
    ((Activity)act).startActivity(intent);
    ((Activity)act).finish();
}

Sie müssen in den Aktivitätskontext wechseln, um eine neue Aktivität zu starten und um die aktuelle Aktivität zu beenden.

Ich hoffe, das ist hilfreich und funktioniert bei mir.

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