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 № 1Viewgroup
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.