Spanish Crear objetos por código en página de un TabHost

Guillermo Sanzeri

Member
Licensed User
Longtime User
Hola a todos. He creado un TabHost con tres páginas, a cada uno le hice un layout y todo anda muy bien.
El tema es que me gustaría poder crear objetos (editText, boton, etc) por código en una página específica, por ejemplo la 2, y no se como referencia a esa página.

Gracias por la ayuda.
 

Heppy

Active Member
Licensed User
Longtime User

Guillermo Sanzeri

Member
Licensed User
Longtime User
El tema es la página del TabHost.

Dim oTab As TabHost

oTab.AddTab( "Pagina 1", "Pagina01" ) ==> Pagina01.lab es un layout que hice para la página y tiene cointroles
oTab.AddTab( "Pagina 2", "Pagina02" ) ==> Igual que el anterior

El Tab carga el layout "Pagina01" y lo muestra como una tab del TabHost. En este Layout hay controles que agregue con el diseñador. Pero hay controles que quiero agregar por código al layout "Pagin01" y no se como hacerlo.

Pagina01.AddView... ==> Esto no funciona
oTab.Tab(2).addView ==> Esto no existe.

Perdón si no se me entiende soy medio complicado para explicar.
 

Heppy

Active Member
Licensed User
Longtime User
Me alegro, estaba buscando una rutina que lo hacía diferente, pero no la he encontrado.

De todas formas, ¿puedes poner la solución, por si necesitamos alguna vez hacer algo así?

Saludos
 

Guillermo Sanzeri

Member
Licensed User
Longtime User
El tema es así. Los Tabs del TabHost son Layouts que tenés que tener creados con el diseñador. Pero no sabía como acceder agregarle controles por código.
La manera es asi:

oTabHost.AddTab( "Titulo Tab", "Layout01" )

No podía acceder al Layout01 para agregarle algún control por código. Eso es porque se debe hacer con el "AddTab2".
La manera es asi.

Dim oPanel as Panel
Dim oBoton as Button

oBoton.Initialize( "oBoton" )
oBoton.Text = "Nuevo"
oBoton.TextColor = Colors.White
oPanel.AddView ( oBoton, 10dip , 15dip , 100dip, 40dip )

oTabHost.AddTab2( "Titulo Pagina", oPanel )

Todos los controles se crean en el Panel y luego se agrega al TabHost.
 

klaus

Expert
Licensed User
Longtime User
In your layout in the Designer put all views onto a Panel, lets say oPanel1.
Then
B4X:
oTabHost.AddTab( "Titulo Tab", "Layout01")
oBoton.Initialize( "oBoton" )
oBoton.Text = "Nuevo"
oBoton.TextColor = Colors.White
oPanel1.AddView ( oBoton, 10dip , 15dip , 100dip, 40dip)
You need to Dim oBoton As Button in Globals.
 
Top