Android onConfigurationChanged () n'est pas appelé dans Activité

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

Fondamentalement, je veux cesser que mon activité se redémarre lors d'un changement d'orientation du périphérique. Pour ce faire, j'ai modifié l'activité dans le fichier manifeste:

  • Comment désactiver explicitement le mode de diffusion fragmentée pour les connexions HTTP dans Android?
  • Comment réactiver "l'arbre des composants" dans Android Studio
  • Affectation étrange, TextView to Bundle, après décompilation, pourquoi?
  • Comment arrêter toast & alertDialog perdre de l'accent sur mon filtre EditText
  • "La méthode setListAdapter (ArrayAdapter) est indéfinie pour le type create"
  • Application du thème AppCompat aux préférences individuelles dans un Fragment préféré
  • <activity android:name=".MyActivity" android:configChanges="orientation|keyboardHidden"></activity> 

    Et j'ai remplacé onConfigurationChanged() dans mon Activité:

     @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); System.out.println("IN onConfigurationChanged()"); } 

    Cependant, l'activité continue de redémarrer lors d'un changement d'orientation, et la méthode onConfigurationChanged() n'est pas appelée.

    Est-ce que quelqu'un sait pourquoi cela se produit?

    8 Solutions collect form web for “Android onConfigurationChanged () n'est pas appelé dans Activité”

    Vous devez utiliser 13 API et définir cette configuration dans la partie de votre activité du manifeste: android: configChanges = "orientation | keyboardHidden | screenSize"

    Ça marche bien. En tout, la version Android.

    La seule chose qui fonctionnait était l'utilisation de getLastNonConfigurationInstance (). http://developer.android.com/reference/android/app/Activity.html#getLastNonConfigurationInstance ()

    Vous ne devez pas utiliser setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); Méthode appeler n'importe où dans votre application, cela évitera d'appeler la méthode onConfigChanged ().

    Modifiez votre manifeste à la suite

     <activity android:name=".MyActivity" android:configChanges="orientation|keyboardHidden|screenSize"></activity> 

    Et renvoie ce lien pour une explication détaillée

    Si vous définissez configchanges = orientation dans votre manifeste, l'activité ne redémarre pas, mais onConfigurationChanged sera appelé comme vous l'avez actuellement mis en œuvre. Essayez tout d'abord de le consigner avec le journal de la classe de journal (c'est la bonne façon de connecter les choses dans Android, ne pas utiliser System out pour que cela soit considéré comme une mauvaise pratique) et avant super mais c'est seulement une chance de 1%, il corrigera Vous arrive.

    Le deuxième 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 être ajouté dans celui-ci et le rappel se produira là-bas.

    Si tel est le cas et que vous souhaitez transférer le résultat ou que vous faites quelque chose dans l'enfant, vous devez obtenir une référence à l'enfant dans le parent et appeler une méthode pour les changements.

    Si vous avez un fragment, vous avez besoin de cela aussi:

     void setRetainInstance(boolean retain) 

    Contrôlez si une instance de fragment est conservée dans la nouvelle création d'activité (par exemple, à partir d'une modification de configuration).

    J'ai rencontré cela et je l'ai réglé sur «vrai».

    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" /> 

    Modifiez votre méthode onConfigurationChanged aux suivantes

     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(); } } 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.