Android onConfigurationChanged pas être appelé
J'ai de la difficulté à dire Android à ne pas appeler onCreate()
lorsque les changements d'orientation. J'ai ajouté android:configChanges="orientation"
à mon manifeste, mais encore lorsque les changements d'orientation de l' onCreate()
est appelé. Voici mon code.
AndroidManifest.xml
<activity android:name="SearchMenuActivity" android:theme="@android:style/Theme.NoTitleBar" android:configChanges="orientation"></activity>
SearchMenuActivity.java
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Set the current layout to the search_menu
setContentView(R.layout.search_menu_activity);
Log.d(TAG, "onCreate() Called");
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
//don't reload the current page when the orientation is changed
Log.d(TAG, "onConfigurationChanged() Called");
super.onConfigurationChanged(newConfig);
}
Et mon LogCat Sortie
06-23 12:33:20.327: DEBUG/APP(2905): onCreate() Called
//Orientation Changes
06-23 12:33:23.842: DEBUG/APP(2905): onCreate() Called
Personne ne sait ce que je fais de mal? Merci.
Vous devez vous connecter pour publier un commentaire.
Un couple de choses à essayer:
android:configChanges="orientation|keyboardHidden|screenSize"
plutôt queandroid:configChanges="orientation"
De s'assurer que vous ne faites pas appel
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
n'importe où. Ce sera la cause de onConfigurationChange() pour ne pas le feu.Vérifier que vous n'êtes pas à l'aide de
android:screenOrientation
dans votre manifeste.Si rien de tout cela fonctionne, lire par le biais de l'Android doc sur la manipulation de l'exécution des changements et assurez-vous que vous faites tout correctement. Il peut y avoir quelque chose quelque part d'autre dans votre code qui est à l'origine du problème. http://developer.android.com/guide/topics/resources/runtime-changes.html
EDIT: Comme derrik ont signalé, je suppose que vous avez été la modification de la configuration avec l'accéléromètre de la détection de la façon dont le dispositif a été confronté. Si vous souhaitez que la configuration pour changer le clavier est affiché/caché le configChanges dans le manifeste doit inclure
keyboardHidden
ainsi.C'était mon gremlin pour le ~même problème:
(À partir de http://developer.android.com/guide/topics/resources/runtime-changes.html)
TL;DR: ajouter "|screenSize" android:configChanges="orientation" pour l'API 14+
Essayez de l'utiliser.....
Vous devez changer le configChanges entrée dans AndroidManifest.xml pour:
Autrement, en faisant glisser le clavier n'a pas de déclenchement onConfigurationChange (), même si les changements d'orientation. Je viens de tester sur mon HTC Desire Z.
Ajouter à votre manifeste à chaque activité.
Ensuite, remplacer
onConfigurationChanged
sur votre activité en tant que telleCe n'était pas ce qui déclenche dans mon
Fragment
(Fragments
ne sont pas inscrits dans leAndroidManifest.xml
) donc j'ai dû le déplacer vers leActivity
la gestion de monFragment
, dans mon cas, leTabsPagerActivity
.Manifeste:
Activité & Fragment:
De sortie:
Peu de choses peuvent être contre-vérifier:
Dans mon cas, j'ai été suivi de changement de langue de l'appareil à l'aide de la onConfigurationChanged.
Quelques choses à savoir sur onConfigurationChanged est il existe une différence de comportement entre onConfigurationChanged de l'Activité et de l'Application.
Lorsque vous modifiez la configuration de l'appareil niveau de l'Application onConfigurationChanged sera appel automatiquement et immédiatement mais onConfigurationChanged de l'activité à l'appel lorsque vous accédez à cette activité.
et une autre chose est que la locale dans le manifeste ne fonctionnera pas, parfois, vous avez Donc déclarer d'autres config événement de changement avec les paramètres régionaux(dans mon cas) qui devrait être comme android:configChanges="layoutDirection|locale"