Si je glisse physiquement le clavier sur mon moto droid A855, il bloque mon application de test avec la trace de la pile collé ci-dessous. Je ne comprends pas pourquoi?
Également, si je démarre mon application avec le clavier, mon application se bloque immédiatement au démarrage. P>
L'application consiste en une activité, qui contient une visualflipper comme mise en page principale. Le ViewFlipper contient deux linearlayouts ... p>
trace de pile: p> EDIT: Ajout de la disposition XML et des extraits pertinents de l'activité principale. P> Fichier de layout XML entier P> /**
* Attempt (not currently working) to work around this bug: http://code.google.com/p/android/issues/detail?id=6191
* TODO: make it work.
*/
@Override
public void onDetachedFromWindow() {
Log.d("Dash","OnDetachedFromWindow()");
try {
super.onDetachedFromWindow();
}
catch (Exception e) {
ViewFlipper v = (ViewFlipper)findViewById(R.id.vFlipper);
if (v != null) {
Log.d("Dash","De-Bug hit. e=" + e.getMessage());
v.stopFlipping();
}
}
}
4 Réponses :
Il est vraiment difficile de vous aider si vous ne fournissez pas une partie de votre code ... Quoi qu'il en soit, cette erreur n'est pas nouvelle et il y a quelques solutions de contournement afin de le résoudre (je suppose que ce bogue) ... Essayez de faire ceci:
@Override protected void onDetachedFromWindow() { try { super.onDetachedFromWindow(); } catch (IllegalArgumentException e) { stopFlipping(); } }
J'ai essayé de mettre en œuvre ce correctif la nuit dernière mais cela n'avait aucun effet. Tout d'abord, Eclipse n'a pas aimé «protégé», donc je devais le rendre public. En outre, STOPFLIPPINGIPIPING doit être qualifié à l'aide de FOETVIEWBYID, etc. et que je mets des messages de débogage dans le nouveau bloc de code et que cela n'a pas été constaté que cela ne tirait même pas, jamais.
@Brad pourriez-vous partager votre code afin que nous puissions voir si vous faites quelque chose de mal?
Trouvé le problème: par code.google.com/p/andrroid/issues / Détail? ID = 6191 Nous devons créer notre propre wrapper ViewFlipper en définissant une nouvelle classe qui prolonge ViewFlipper. Appelez la nouvelle classe myViewflipper. Et n'importe où que je souhaite utiliser une fenêtre ViewFlipper, telle que dans la mise en page XML, utilisez la classe MyViewflipper qui inclut le code de correctif spécifié dans le lien que j'ai collé.
Pour résoudre ce problème, vous devez
myViewflipper code> qui remplace ViewFlipper code> (voir ci-dessous) li>
- Référence que la nouvelle classe où vous auriez déjà référencé
ViewFlipper CODE> LI>
- Définissez votre classe et votre présentation comme indiqué ci-dessous: Li>
ul>
nouvelle classe appelée myViewflipper code>. Contient les éléments suivants: p> xxx pré> maintenant pour utiliser cette version "Correction" de ViewFlipper code> Vous devez le faire référence dans la mise en page XML. Puisqu'il s'agit fondamentalement, une "vue personnalisée", vous devez qualifier complètement le chemin de paquet vers MyViewFlipper Code>, comme on l'a vu ici: p> xxx pré> maintenant l'application N'est plus accidoué sur l'événement Slide du clavier ou si l'application est démarrée avec la diapositive déjà sortie. Cherchez cela dans le journal: P>
06-11 20:08:15.811 D/MyViewFlipper( 6106): Stopped a viewflipper crash
Je pense que j'ai fait une petite typo - la
Vous manquez une ligne importante: appelez STOPFlipping () dans le bloc de capture de sorte qu'il appelle la mise à jour de la mise à jour ().
Je sais que cette question a été posée il y a presque deux ans, mais depuis lors, une solution très facile a été mise en œuvre. Add Android: configchange = "Orientation | Clavier | KeyboardHidden" code> dans chaque appel d'activité dans le manifeste. P>
Ouais je ne vois pas ce bug avant .. mais encore une fois, je l'ai dans mon manifeste