/ / android.widget.TextView non può essere lanciato su android.view.ViewGroup0 - android, android-layout, android-studio, android-widget, android-textview

android.widget.TextView non può essere lanciato su android.view.ViewGroup0 - android, android-layout, android-studio, android-widget, android-textview

non riesco a trovare la fonte di questo errore. Ho visto altre domande riguardanti lo stesso problema, che è spesso causato da un tag di chiusura mancante. Ma non riesco a trovare quale manca nel mio codice ...

Il mio file activity.xml principale:

<?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>

E uno per un frammento:

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

</LinearLayout>

Logcat dice:

 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

risposte:

1 per risposta № 1

Viewgroup indica una vista che può avere al suo interno altre viste. Stai aprendo e chiudendo le tue TextView separatamente, trasformandole in un gruppo quando non possono.

In base al codice che hai pubblicato, la soluzione sarebbe rimuovere tutto </TextView> e chiudilo direttamente alla fine degli attributi con />, come questo, ad esempio:

<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" />

Fai questo in tutte le tue TextView. Inoltre, controlla se ce n'è <TextView> tag con qualsiasi altra vista al suo interno, se è così allora si dovrebbe rimuovere e mettere da qualche altra parte.


0 per risposta № 2

Penso che potresti aver trovatoViewById in quella specifica vista testo e averlo fuso come un ViewGroup, ad esempio:

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

Non è possibile eseguire il cast della vista testo in un gruppo di viste perché non è un gruppo di vista, la vista del testo è una vista.

Se guardi i documenti di Android, la vista testo estende Vista: http://developer.android.com/reference/android/widget/TextView.html

I ViewGroup sono oggetti come RelativeLayout o LinearLayouts o FrameLayouts che possono contenere più viste al loro interno.