2009-09-07 9 views
1

En utilisant Android, ici fait partie d'un fichier xml de mise en page:TextView dans un LinearLayout, accident avec une longue chaîne

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    android:textColor="#191919"> 

     <TextView android:id="@+id/someTextField" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:textStyle="bold" /> 

     <TextView android:id="@+id/anotherTextField" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" /> 

</LinearLayout> 

J'ajoute ce point de vue (à l'exécution) à un ViewAnimator comme celui-ci:

ViewAnimator viewAnimator = (ViewAnimator)findViewById(R.id.viewAnimator); 
View newView = View.inflate(this, R.layout.new_view, null); 
viewAnimator.addView(newView); 
viewAnimator.showNext(); 

String newValue = "new value for the text field"; 
findViewById(R.id.deal_view).setVisibility(View.VISIBLE); 
TextView someTextField = (TextView)findViewById(R.id.someTextField); 
someTextField.setText(newValue); 

Cela semble fonctionner très bien, mais quand newValue est assez long pour prendre plus de 1 ligne de texte dans la mise en page, je reçois un accident:

09-06 21:36:48.208: ERROR/AndroidRuntime(6561): Uncaught handler: thread main exiting due to uncaught exception 
09-06 21:36:48.248: ERROR/AndroidRuntime(6561): java.lang.StackOverflowError 
09-06 21:36:48.248: ERROR/AndroidRuntime(6561):  at android.view.ViewGroup.drawChild(ViewGroup.java:1486) 
09-06 21:36:48.248: ERROR/AndroidRuntime(6561):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228) 
(many more lines like this) 

Est-ce assez d'informations pour voir ce que je pourrais faire de mal? Cela fonctionne parfaitement bien quand newValue est assez court pour une ligne. J'ai pensé à essayer un TableLayout mais il semble que c'est exactement ce qu'un LinearLayout est bon pour.

+0

Juste curieux, pourquoi utilisez-vous ViewAnimator directement? ViewFlipper ou ViewSwitcher ne font-ils pas exactement cela pour vous? – Matthias

+0

ViewFlipper et ViewSwitcher ... Je vais leur donner un essai pour voir si cela aide du tout ... Je suis assez nouveau pour Android encore, alors merci pour le conseil. – marcc

+1

J'espère que vous avez résolu votre problème! Mais je pense que le problème est avec ERROR/AndroidRuntime (6561): java.lang.StackOverflowError Cela se produit normalement en raison de la profondeur dans la hiérarchie de l'interface utilisateur. – bhatt4982

Répondre

0

Merci pour l'aide dans les commentaires. J'ai fini par prendre le conseil ici (abandonner ViewAnimator directement et en utilisant ViewFlipper). Meilleure application, mais toujours le même problème. J'ai laissé tomber un niveau de conteneurs LinearLayout et ça a commencé à fonctionner correctement.

Je suppose que bhatt4982 a raison, la profondeur de l'interface utilisateur était trop grande.

bhatt4982, postez votre commentaire comme une réponse pour obtenir un crédit pour cela.

Questions connexes