Estou tentando adicionar TextViews
ao meu layout definido em xml no código. Eu tenho uma folha xml, onde muitos Views
são definidos. Mas eu tenho que adicionar algumas visualizações no código, então crie uma LinearLayout
na folha 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>
E neste layout, eu gostaria de adicionar o meu 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);
Mas eu só recebo a seguinte mensagem de erro:
: java.lang.ClassCastException: android.widget.TextView
Como eu posso fazer isso?
Obrigado pela ajuda. Martin
setContentView(R.layout.your_xml_layout);
realmente carregando o xml certo? Você tem outros layouts de xml nos quais usa oandroid:id="@+id/info"
TextView?Respostas:
tente usar
também verifique se os parâmetros de layout que você está criando são LinearLayout.LayoutParams ...
fonte
Ei, eu verifiquei seu código, não há nenhum erro grave no seu código. este é o código completo:
main.xml: -
este é Stackoverflow.java
copie esse código e execute-o. é completamente livre de erros. cuidar...
fonte
<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
é inicializado. Isso deve ser marcado como uma resposta.Você pode adicionar um
TextView
ao seu layout linear programaticamente assim:fonte
MyClass.this
na maioria dos casos, é o mesmo quethis
. Você precisa especificar, no entanto, o nome da classe, se estiver em uma classe aninhada e quiser acessar a instância da classe "externa", o que é muito comum ao definir retornos de chamada para os eventos no Android.MyClass.this
é um exemplo deMyClass
, e será apenas um contexto se implementa MyClass de contexto (por exemplo, se estende Actividade)fonte
Você deve usar algo semelhante a isso para adicionar o TextView ao LinearLayout dinamicamente:
getActivity () é usado para Fragmentos internos, você pode usar o contexto ou algo semelhante para cada instância em que estiver.
fonte
Você precisa acessar o layout por meio do recurso de layout, não um recurso de ID que não seja garantido como exclusivo. A referência do recurso deve se parecer com R.layout.my_cool_layout, onde o layout XML acima é armazenado em res / layout / my_cool_layout.xml.
fonte
fonte
Aqui é onde a exceção ocorre
addView
O método aceita um parâmetro do tipoView
, nãoTextView
. Portanto, digite o objeto valueTv em um objeto View, explicitamente.Portanto, o código corrigido seria:
fonte