J'essaie d'ajouter TextViews
à ma mise en page définie par XML dans le code. J'ai une feuille xml, où beaucoup de Views
sont définis. Mais je dois ajouter quelques vues dans le code, donc créez un LinearLayout
dans la feuille xml:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:id="@+id/info"
android:layout_height="wrap_content"
android:orientation="vertical">
</LinearLayout>
Et dans cette mise en page, j'aime ajouter mon TextView
:
View linearLayout = findViewById(R.id.info);
//LinearLayout layout = (LinearLayout) findViewById(R.id.info);
TextView valueTV = new TextView(this);
valueTV.setText("hallo hallo");
valueTV.setId(5);
valueTV.setLayoutParams(new LayoutParams(
LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
((LinearLayout) linearLayout).addView(valueTV);
Mais je reçois uniquement le message d'erreur suivant:
: java.lang.ClassCastException: android.widget.TextView
Comment puis-je le faire?
Merci pour ton aide. Martin
setContentView(R.layout.your_xml_layout);
chargement du bon XML est-il vraiment? Avez-vous d'autres mises en page XML où vous utilisezandroid:id="@+id/info"
qui se trouvent être un TextView?Réponses:
essayez d'utiliser
assurez-vous également que les paramètres de mise en page que vous créez sont LinearLayout.LayoutParams ...
la source
Hey, j'ai vérifié votre code, il n'y a pas d'erreur grave dans votre code. c'est le code complet:
main.xml: -
c'est Stackoverflow.java
copiez ce code et exécutez-le. il est totalement exempt d'erreur. prends soin de toi...
la source
<TextView android:id="@+id/tvDInfo3" android:layout_width="0dp" android:layout_height="wrap_content" android:textStyle="bold" android:text="Release Date" android:gravity="center" android:padding="@dimen/dyk_text_pad" android:textColor="#000000" android:textSize="@dimen/info_text_size" android:layout_weight="1" />
TextView
est initialisé. Cela devrait être marqué comme une réponse.Vous pouvez ajouter un
TextView
à votre disposition linéaire par programme comme ceci:la source
MyClass.this
dans la plupart des cas, est le même quethis
. Vous devez cependant spécifier le nom de la classe, si vous êtes dans une classe imbriquée et que vous souhaitez accéder à l'instance de la classe "externe", ce qui est très courant lors de la définition de rappels pour les événements sous Android.MyClass.this
est une instance deMyClass
, et ce ne sera un contexte que si MyClass implémente le contexte (par exemple étend l'activité)la source
Vous devez utiliser quelque chose de similaire pour ajouter dynamiquement TextView à LinearLayout:
getActivity () est utilisé pour les fragments internes, vous pouvez utiliser le contexte ou tout autre élément similaire pour chaque instance dans laquelle vous vous trouvez.
la source
Vous devez accéder à la mise en page via sa ressource de mise en page, et non une ressource d'identifiant qui n'est pas garantie unique. La référence de ressource doit ressembler à R.layout.my_cool_layout où votre mise en page XML ci-dessus est stockée dans res / layout / my_cool_layout.xml.
la source
la source
Voici où se produit l'exception
addView
La méthode prend un paramètre de typeView
, nonTextView
. Par conséquent, transtypez l'objet valueTv dans un objet View, explicitement.Par conséquent, le code corrigé serait:
la source