10
votes

Le texte de TextView disparaît lorsque l'appareil tourné

J'écris une application de numérotation téléphonique pour Android. J'ai créé une mise en page pour le clavier, qui contient un TextView et 10 boutons. Les boutons sont en tant que touches de 10 chiffres (0 à 9) et TextView permettent d'afficher le numéro en fonction des touches enfoncées.

Dans mon application, je suis ajouté au texte ("0" ou "1", etc.) sur TextView pour chaque bouton enfoncé. Si j'ai appuyé sur les boutons 1, 2, 3 alors le texte sur TextView est 123 . Le problème est, prenons l'écran est en mode paysage et TextView contient 123, si je le tourne, en mode portrait, aucun texte sur TextView.

S'il vous plaît aidez-moi à ce sujet.


6 commentaires

Vérifiez celui-ci Stackoverflow.com/Questtions/3542333/...


Votre TextView contient-elle une pièce d'identité? Utilisez-vous des fragments?


ID est là mais je n'utilise pas de fragments.


Ajoutez ceci dans votre classe Java @override Public Void OnconfigurationChanged (Configuration finale NewConfig) {// Ignorer le changement d'orientation pour maintenir l'activité du redémarrage de Super.OnconfigurationChanged (NewConfig); } et dans votre fichier manifeste ajoutez ce Cela devrait probablement fonctionner.


@Mukunda merci sa fonctionne maintenant. Mais seulement Android: configchanges = "Orientation est suffisant.


@Yugandharbabu Oui seulement Orientation est suffisant, mais la documentation Android indique Orientation | KeyboardHenside et versions ultérieures après 2.3, vous devez également ajouter ScreenSize


5 Réponses :


8
votes

Veuillez vérifier le changement d'orientation, sur la méthode Créer une méthode, ce qui nécessite que toutes les vues soient créées à nouveau, vous devez donc utiliser l'une des méthodes suivantes:

  1. Utilisez la méthode OnSaveDInstance et enregistrez les états des composants / vues sur Bundle.
  2. Utilisez simplement le drapeau suivant True dans votre fichier manifeste dans la balise d'activité Android: configchange = "KeyboardHésditéDonnée | Orientation". comme ci-dessous: XXX


0 commentaires

8
votes

La raison en est due à Android détruisant essentiellement l'activité et la créant à nouveau chaque fois que vous faites pivoter l'appareil. Ceci est principalement destiné à autoriser différentes mises en page basées sur le mode portrait / paysage.

Le meilleur moyen de gérer cela est de stocker toutes les données dont vous avez besoin pour conserver dans l'activité Bundle , en répondant à l'événement OnSaveDinstance (appelé juste avant que Android détruit l'activité), puis réapplique ceux de l'événement Standard Oncreate.

Bien que vous pouvez Ajouter "Orientation" à la propriété Configchanges, gardez à l'esprit que vous dites essentiellement à Android que vous allez gérer tout ce qui concerne l'orientation changer vous-même - y compris la modification de la disposition , etc.


0 commentaires

16
votes

Qu'est-ce que @jeet recommandé n'a pas fonctionné pour moi. Je devais ajouter "Screensize". C'est la ligne que vous devez ajouter votre manifeste.xml dans le noeud de votre activité: xxx

Ainsi, le nœud complet peut ressembler à ceci: xxx


1 commentaires

Ajouter Screensize Le truc! Débogué le problème pendant plusieurs heures et enfin ici est une solution.



0
votes

Si quelqu'un a toujours des problèmes ... Cela a fait de l'affaire pour moi xxx

Vous enregistrez essentiellement des valeurs que vous souhaitez avant la rotation (c'est-à-dire lorsque OnsaveInstanCestate est appelé) dans un paquet et après Rotation (OnrestoreInstanCestate) Vous venez de tirer toutes les valeurs du paquet. Juste pour clarifier, TVNAZIVPODATKA et TVENOTAMERE sont des widgets TextView.

... avec une aide de Comment éviter sur mesure Vues de la perte d'état à travers l'orientation d'écran change


0 commentaires

2
votes

Pour conserver un texte de TextView, vous pouvez simplement SET STRORT> TEXTVIEW'S STRAND> FreeZeText Strong> Propriété à True forte>. Comme dans:

    <TextView
    ...
    android:freezesText="true"
    .../>


0 commentaires