9
votes

Android OnconfigaturationChanged () n'est pas appelé en activité

Je me rends compte qu'il y a quelques autres postes sur ce sujet, mais les solutions pour ces postes ne fonctionnent pas pour moi.

Fondamentalement, je veux cesser mon activité de redémarrer un changement d'orientation de périphérique. Pour ce faire, j'ai modifié l'activité dans le fichier manifeste: p> xxx pré>

et j'ai remplacé OnconfigurationChanged () code> dans mon activité: p >

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);

    System.out.println("IN onConfigurationChanged()");
}


0 commentaires

8 Réponses :


0
votes

Si vous définissez des confighanges = orientation dans votre manifeste, l'activité ne se redémarrera pas, mais la fonctionnement à la fois surConfiguration sera appelée comme vous l'avez actuellement mise en œuvre. Essayez d'abord de vous connecter avec le journal de la classe de journal (voici la bonne façon de vous connecter à Android n'utilisez pas le système pour cela, c'est considéré comme une mauvaise pratique) et avant de super mais ce n'est que 1% de chances qu'elle réparera quoi vous arrive.

Le second cas est que vous avez l'activité actuelle imbriquée dans un tabhost par exemple ou un groupe d'activités. Si votre activité a une activité parent, le changement de configuration doit alors être ajouté dans celui-là et le rappel se produira là-bas.

Si tel est le cas et que vous souhaitez transmettre le résultat ou aussi faire quelque chose dans l'enfant, vous devez obtenir une référence à l'enfant dans le parent et appelez une méthode sur celle-ci pour les modifications.


2 commentaires

Mon activité prolonge la liste de la liste est que ce que vous voulez dire?


Et bien non. Je veux dire avoir une mise en page d'onglets avec des activités imbriquées ou quelque chose comme ça. Une activité de liste n'est pas imbriquée, il est juste un type d'activité.



1
votes

La seule chose qui fonctionnait utilisait GetLastnonConfigurationInstance (). http://developer.android.com/reference/andrroid/app/activity .html # getlastnonconfigurationInstance ()


1 commentaires

Cela m'a aidé. J'ai remplacé cette méthode dans l'activité Tabwidget, car toutes mes activités ont été construites dans des onglets. Bien que les développeurs Android indiquent que cette méthode est obsolète ... Merci Littlek.



1
votes

Vous ne devez pas utiliser la séréquisser (ActivityInfo.Screen_orientation_portrait); Méthode appelez l'endroit où dans votre application, cela évitera d'appeler la méthode OnConfigchanged ().


0 commentaires

-2
votes

modefiy votre OnconfigurationChanged code> Méthode sur le suivant

public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    // Checks the orientation of the screen
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
        Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
    }
}


0 commentaires

8
votes

Vous devez utiliser 13 API et définir cette configuration dans la partie de votre activité du manifeste: Android: configchange = "Orientation | KeyboardCheck | Screensize"

ça marche bien. Dans toutes les versions Android.


3 commentaires

Peut-être que c'est évident pour tout le monde sauf moi, mais cela va dans la section d'activité du manifeste.


Ceci est la bonne et la meilleure réponse, sur Android API 13+ Cet événement ScreenSize de l'événement est appelé et redémarre l'activité si elle n'est pas manipulée !! Merci beaucoup.


Il fonctionne avec aucun Android: Scragorientation définie, ou avec celui-ci défini sur "FullSensor". "Sensorportrait" ne fonctionne pas.



0
votes

Si vous avez un fragment, vous en avez également besoin également:

void setRetainInstance(boolean retain) 


0 commentaires

0
votes

J'ai utilisé cela, et cela a aidé:

package="com.s2dio.evallet"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="8" />


1 commentaires

Non, ce n'est pas une bonne réponse, vous devez ajouter l'option de taille d'écran sur Configchanges dans Manifest pour gérer les versions +13 SDK.



2
votes

Changez votre manifeste en suivant xxx

et renvoyer ce lien pour une explication détaillée problème d'orientation


0 commentaires