J'ai un auditeur oncelick de la galerie qui devrait effacer toutes les lignes à l'intérieur de la tableView, puis ajouter des lignes / rangées à une vue de table dans un ScrollView. Le fragment devrait changer sur chaque bouton clic.
Cependant, je reçois: java.lang.illegalstateException: ScrollView peut héberger un seul enfant direct. P>
Bouton de myactivité strong> P> <?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TableLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/tracker_layout">
</TableLayout>
</ScrollView>
8 Réponses :
euh ... ne mettez pas plusieurs vues à l'intérieur d'une vue de défilement. Mettez une seule vue à l'intérieur de celui-ci, c'est le type de mise en page que vous souhaitez pour vos vues multiples - TableLayout, Framelayout, etc. P>
Le seul enfant dans mon ScrollView n'est-il pas Tablayout?
Si l'exception se produit, vous obtenez plusieurs vues dans la vue Scroll. Pourquoi? Il a ajouté une exception ci-dessous. Apparemment, il ajoute une hiérarchie de vue d'un fragment à une vue de défilement.
Je joue avec le code et je ne suis toujours pas sûr de savoir pourquoi cela se produit, il y a définitivement quelque chose qui ne va pas sur le gestionnaire de fragments lorsqu'il échange des fragments (remplacer (Restern, fragment) ) p>
dans mon fragment onCréateView a été ce code: p>
FATAL EXCEPTION: main java.lang.IllegalStateException: ScrollView can host only one direct child at android.widget.ScrollView.addView(ScrollView.java:219) at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:787) at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:977) at android.app.BackStackRecord.run(BackStackRecord.java:638) at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1309) at android.app.FragmentManagerImpl$1.run(FragmentManager.java:398) at android.os.Handler.handleCallback(Handler.java:587) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:132) at android.app.ActivityThread.main(ActivityThread.java:4123) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:491) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) at dalvik.system.NativeStart.main(Native Method)
Et quel est le "article"? Une sorte de variable initialisée à Oncreeview ()?
En fait, vous ne pouvez pas avoir de choses comme: mais si vous avez un élément supplémentaire en dehors de la table, il se bloque avec un exemple p> espère cette aide. P> P> java.lang.illegalStateException: ScrollView Peut héberger un seul enfant direct code> p>
Je sais que cette question est assez ancienne mais j'ai couru dans le même problème et cela finit par être que vous ne pouvez pas avoir un Il suffit de envelopper la vision de ScrollView dans votre mise en page Tracker.xml avec un ScrollView code> comme vue de base pour la mise en page. P>
relativelayoutout code> et vous devez être bon pour aller p>
Une autre possibilité est que l'élément de fermeture ne correspond pas. C'est à dire.
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout ...> ... </LinearLayout> </LinearLayout>
Vous devez ajouter linearlayout dans ScrollView, cela fonctionnera. P>
Essayez d'utiliser un donc au lieu de P>
getSupportFragmentManager().beginTransaction()
.replace(R.id.details_container, new DetailsFragment(), DETAILFRAGMENT_TAG)
.commit();
Je souffre de ce problème la semaine dernière, puis trouvez la meilleure réponse possible de ce problème. P>
ScrollView peut héberger un seul enfant direct P> blockQuote>
Solution: Stackoverflow.com/a/55175944/6676310