Estoy tratando de agregar TextViews
a mi diseño definido en xml en el código. Tengo una hoja xml, donde Views
se definen muchos . Pero tengo que agregar algunas vistas en el código, así que crea una LinearLayout
en la hoja 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>
Y en este diseño, me gusta agregar mi 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);
Pero solo recibo el siguiente mensaje de error:
: java.lang.ClassCastException: android.widget.TextView
¿Cómo puedo hacerlo?
Gracias por tu ayuda. Martín
setContentView(R.layout.your_xml_layout);
Realmente está cargando el xml correcto? ¿Tiene otros diseños xml donde utilizaandroid:id="@+id/info"
que resultan ser TextView?Respuestas:
intenta usar
también asegúrese de que los parámetros de diseño que está creando sean LinearLayout.LayoutParams ...
fuente
Hola, he comprobado su código, no hay ningún error grave en su código. este es el código completo:
main.xml: -
esto es Stackoverflow.java
copie este código y ejecútelo. Está completamente libre de errores. Cuídate...
fuente
<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
se inicializa el resto de las propiedades de . Esto debe ser marcado como una respuesta.Puede agregar un
TextView
a su diseño lineal mediante programación de esta manera:fuente
MyClass.this
en la mayoría de los casos, es lo mismo quethis
. Sin embargo, debe especificar el nombre de la clase, si está en una clase anidada y desea acceder a la instancia de la clase "externa", que es muy común al definir devoluciones de llamada para los eventos en Android.MyClass.this
es una instancia deMyClass
, y solo será un contexto si MyClass implementa Contexto (por ejemplo, extiende la Actividad)fuente
Debería usar algo similar a esto para agregar TextView a LinearLayout dinámicamente:
getActivity () se usa para Fragmentos internos, puede usar contexto o cualquier cosa similar por cada instancia en la que se encuentre.
fuente
Debe acceder al diseño a través de su recurso de diseño, no un recurso de identificación que no está garantizado como único. La referencia de recursos debería parecerse a R.layout.my_cool_layout donde su diseño XML anterior se almacena en res / layout / my_cool_layout.xml.
fuente
fuente
Aquí es donde ocurre la excepción
addView
El método toma un parámetro de tipoView
, noTextView
. Por lo tanto, escriba el objeto valueTv en un objeto View, explícitamente.Por lo tanto, el código corregido sería:
fuente