Я пытаюсь добавить TextViews
в код свой XML-макет. У меня есть xml-лист, где много Views
определено. Но мне нужно добавить несколько представлений в код, поэтому создайте LinearLayout
в 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>
И в этот макет мне нравится добавлять 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);
Но я получаю только следующее сообщение об ошибке:
: java.lang.ClassCastException: android.widget.TextView
Как мне это сделать?
Спасибо за помощь. Мартин
setContentView(R.layout.your_xml_layout);
ли загружается правильный xml? Есть ли у вас другие макеты xml, в которых вы используетеandroid:id="@+id/info"
TextView?Ответы:
попробуйте использовать
также убедитесь, что создаваемые вами параметры макета - LinearLayout.LayoutParams ...
источник
Привет, я проверил ваш код, в нем нет серьезных ошибок. это полный код:
main.xml: -
это Stackoverflow.java
скопируйте этот код и запустите его. это полностью безошибочно. Береги себя...
источник
<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
инициализируются остальные свойства . Это должно быть отмечено как ответ.Вы можете программно добавить
TextView
в линейный макет следующим образом:источник
MyClass.this
в большинстве случаев совпадает сthis
. Однако вам необходимо указать имя класса, если вы находитесь во вложенном классе и хотите получить доступ к экземпляру «внешнего» класса, что очень часто встречается при определении обратных вызовов для событий в android.MyClass.this
это экземплярMyClass
, и он будет контекстом только в том случае, если MyClass реализует Context (например, расширяет активность)источник
Вы должны использовать что-то подобное для динамического добавления TextView в LinearLayout:
getActivity () используется для внутренних фрагментов, вы можете использовать контекст или что-то подобное для каждого экземпляра, внутри которого вы находитесь.
источник
Вам необходимо получить доступ к макету через его ресурс макета, а не ресурс идентификатора, уникальность которого не гарантируется. Ссылка на ресурс должна выглядеть как R.layout.my_cool_layout, где указанный выше макет XML хранится в res / layout / my_cool_layout.xml.
источник
источник
Вот где возникает исключение
addView
Метод принимает параметр типаView
, а неTextView
. Следовательно, явно приведите тип объекта valueTv в объект View.Следовательно, исправленный код будет:
источник