/ / android.widget.TextView ne peut pas être casté en android.view.ViewGroup0 - android, android-layout, android-studio, android-widget, android-textview

android.widget.TextView ne peut pas être converti en android.view.ViewGroup0 - android, android-layout, android-studio, android-widget, android-textview

ne peut pas trouver la source de cette erreur. Vu d'autres questions concernant le même problème, qui est souvent causé par une balise de fermeture manquante. Mais je ne trouve pas celui qui manque dans mon code ...

Mon fichier principal activity.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:orientation="horizontal">

<TextView
android:text="@string/main_textview"
android:layout_width="0px"
android:layout_weight="2"
android:background="#FFF8DC"
android:padding="@dimen/component_padding"
android:layout_height="match_parent" >
</TextView>

<TextView
android:id="@+id/simplefragment"
android:layout_width="0px"
android:layout_weight="2"
android:orientation="vertical"
android:padding="@dimen/component_padding"
android:layout_height="match_parent" >
</TextView>

</LinearLayout>

Et un pour un fragment:

<TextView
android:text="@string/hello_world"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</TextView>

</LinearLayout>

Logcat dit:

 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.melle.androidfragments/com.example.melle.androidfragments.MainActivity}: java.lang.ClassCastException: android.widget.TextView cannot be cast to android.view.ViewGroup

Caused by: java.lang.ClassCastException: android.widget.TextView cannot be cast to android.view.ViewGroup

Réponses:

1 pour la réponse № 1

Viewgroup signifie une vue qui peut avoir d'autres vues à l'intérieur. Vous "ouvrez et fermez vos TextViews séparément, ce qui en fait un groupe quand ils ne le peuvent pas".

Selon le code que vous avez publié, la solution serait de supprimer tous les </TextView> et fermez-le directement à la fin des attributs avec />, comme ceci, par exemple:

<TextView
android:id="@+id/simplefragment"
android:layout_width="0px"
android:layout_weight="2"
android:orientation="vertical"
android:padding="@dimen/component_padding"
android:layout_height="match_parent" />

Faites-le dans toutes vos TextViews. Vérifiez également s'il y en a <TextView> avec toute autre vue à l'intérieur, si c'est le cas, vous devez le supprimer et le placer ailleurs.


0 pour la réponse № 2

Je pense que vous avez peut-être trouvé ViewViewById cette vue de texte spécifique et l'a converti en ViewGroup, par exemple:

ViewGroup simpleFragment = (ViewGroup) findViewById (R.id.simplefragment);

Vous ne pouvez pas convertir la vue de texte en un groupe de vues car ce n'est pas un groupe de vues, la vue de texte est une vue.

Si vous regardez les documents Android, textview étend la vue: http://developer.android.com/reference/android/widget/TextView.html

Les ViewGroups sont des objets tels que RelativeLayout ou LinearLayouts ou FrameLayouts qui peuvent contenir plusieurs vues.