Android onConfigurationChanged () wird in Activity nicht aufgerufen

8

Mir ist klar, dass es noch ein paar andere Beiträge zu diesem Thema gibt, aber die Lösungen für diese Beiträge funktionieren nicht für mich.

Grundsätzlich möchte ich meine Aktivität beim Neustart bei einer Änderung der Geräteausrichtung nicht fortsetzen. Um dies zu tun, habe ich die Aktivität in der Manifest-Datei geändert:

%Vor%

und ich habe onConfigurationChanged() in meiner Aktivität überschrieben:

%Vor%

Allerdings wird die Aktivität bei einer Orientierungsänderung immer noch neu gestartet, und die Methode onConfigurationChanged() wird nicht aufgerufen.

Weiß jemand, warum das passiert?

    
littleK 15.06.2011, 14:28
quelle

8 Antworten

1

Das einzige, was funktioniert hat, war getLastNonConfigurationInstance (). Ссылка ()

    
littleK 23.06.2011, 03:35
quelle
8

Sie sollten die 13-API verwenden und diese Konfiguration im Manifest Ihrer Aktivität festlegen: android: configChanges="orientation | keyboardHidden | screenSize"

Es funktioniert gut. Bei allen Android-Version.

    
leonvian 25.10.2012 02:29
quelle
1

Sie sollten setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) nicht verwenden; Methodenaufruf an beliebiger Stelle in Ihrer Anwendung vermeidet dies den Aufruf der onConfigChanged () Methode.

    
jaffer 23.11.2011 11:39
quelle
1

Ändern Sie Ihr Manifest in folgendes

%Vor%

und verweisen Sie auf diesen Link für eine detaillierte Erklärung Ausrichtungsproblem

    
Avinash Agrawal 29.03.2013 13:31
quelle
0

Wenn Sie configchanges = orientation in Ihrem Manifest definieren, wird die Aktivität nicht neu gestartet, stattdessen wird onConfigurationChanged aufgerufen, wie Sie es derzeit implementiert haben. Versuchen Sie zuerst, dies mit der Log-Klasse Log (das ist der richtige Weg, um Dinge in Androiden zu protokollieren System nicht für diese als eine schlechte Praxis angesehen) und vor Super, aber das ist nur eine 1% ige Chance, wird es zu beheben, was zu protokollieren passiert dir.

Der zweite Fall besteht darin, dass Sie die aktuelle Aktivität in einem tabHost zum Beispiel oder einer Aktivitätsgruppe verschachtelt haben. Wenn Ihre Aktivität eine übergeordnete Aktivität hat, müssen Konfigurationsänderungen hinzugefügt werden, und der Rückruf wird dort stattfinden.

Wenn das der Fall ist und Sie das Ergebnis weiterleiten oder auch etwas in dem Kind tun wollen, müssen Sie einen Verweis auf das Kind im Elternteil erhalten und eine Methode für die Änderungen aufrufen.

    
DArkO 15.06.2011 14:51
quelle
0

Wenn du ein Fragment hast, brauchst du das auch:

%Vor%
  

Kontrolliere ob ein Fragment   Instanz wird bei der Neuerstellung von Aktivitäten beibehalten (z. B. von a   Konfigurationsänderung).

Ich bin darauf gestoßen und habe es auf 'True' gesetzt, um es zu reparieren.

    
Edmund Chang 29.10.2012 22:05
quelle
0

Ich habe das benutzt und es hat geholfen:

%Vor%     
mohsin 06.12.2012 14:05
quelle
-2

Modifizieren Sie Ihre onConfigurationChanged -Methode zu den folgenden

%Vor%     
user1531015 26.02.2012 11:08
quelle