Spanish Problemas con TabLayout al iniciar app

desof

Well-Known Member
Licensed User
Longtime User
Hola amigos tengo largo rato tratando de solucionar esto y no puedo la cuestion es que estoy usando el TabLayout que me crea 3 pestañas y todo funciona correctamente ecepto que al ingresar la primera vez a la actividad no encuentro la forma de que se muestre el contenido de la primer pestaña o sea index =0.
O SEA todo funciona sólo cuando le doy clic a una pestaña pero no puedo ir por código hacia alguna de ellas.

Adjunto el código mas abajo y las capturas corresponden a lo que veo cuando se presiona una pestaña y la otra es como aparece cuando abro la Actividad la primera vez.

vfLhOPWK.png

ASI ME APARECE AL ABRIR LA ACTIVIDAD Y DEBERIA APARECER COMO EN LA SIGUIENTE IMAGEN

52ygLsDvP.png



B4X:
Sub Activity_Create(FirstTime As Boolean)   
    Activity.LoadLayout("postmain2")
    Dim bd As BitmapDrawable = xml.GetDrawable("buscar")
    DSFloatingActionButton1.SetIcon(bd)   
    ' ──────────────────────
    ' CREA LAS PESTAÑAS
    ' ──────────────────────
    PC.Initialize
    Dim p1 As Panel
    p1.Initialize("")
    PC.AddPage(p1, "SERVICIOS")   
    Dim p2 As Panel
    p2.Initialize("")
    PC.AddPage(p2, "COMERCIAL")   
    Dim p3 As Panel
    p3.Initialize("")
    PC.AddPage(p3, "EXTRAS")   
    VP.PageContainer = PC   
    Dim AC As AppCompat
    TabLayout.Color = AC.GetThemeAttribute("colorPrimary")
    TabLayout.SetTabTextColors(Colors.LightGray, Colors.White)
    TabLayout.SetViewPager(VP)   
    ' ─────────────────────
    ' PREPARAR EL BOTON DE ACCION
    ' ─────────────────────
    Dim x As String ="SanCrisApp"
    If x.StartsWith("(") Then
        DSFloatingActionButton1.Hide
    Else
        DSFloatingActionButton1.Show
    End If           
End Sub

Sub Activity_Resume
    ToastMessageShow("resume",True)
    panActive = PC.GetPageObject(1)
    TabLayout_TabSelected(1,"COMERCIAL",Null)
'VP_PageChanged (0)
End Sub

Sub TabLayout_TabSelected(Index As Int, SelectedTab As String, Tag As Object)
    ToastMessageShow(SelectedTab,False)
        Select Case Index
        Case 0
            'ToastMessageShow("pestaña 0",False)
        End Select   
End Sub

Sub VP_PageChanged (Position As Int)   
    Dim AltoBoton As Int   
    AltoBoton=(panActive.Height/5) -5dip
    ToastMessageShow(AltoBoton,True)       
    panActive = PC.GetPageObject(Position)
    panActive.LoadLayout("custlv")   
   
    If Position=0 Then
        For i= 1 To 5
            CustomListView1.Add(CreaItem("" , "", " ", " ", (i), CustomListView1.AsView.Width ,AltoBoton  ), AltoBoton, i)
        Next
    Else If Position=1 Then
        For i= 1 To 5
            CustomListView1.Add(CreaItem("" , "", " ", " ", (i+5), CustomListView1.AsView.Width ,AltoBoton  ), AltoBoton, i)
        Next       
    Else
        For i= 1 To 5
            CustomListView1.Add(CreaItem("" , "", " " , " ", (i+10), CustomListView1.AsView.Width ,AltoBoton  ), AltoBoton, i)
        Next           
    End If   
End Sub
 

rscheel

Well-Known Member
Licensed User
Longtime User
Pasa lo siguiente, que estas cargando los datos de TabLayout cada ves que cambias de posiciones, es como si tuvieras un botón y cada ves que lo presionas carga una lista de datos en listview.

Editado por mi :).
 
Last edited:

desof

Well-Known Member
Licensed User
Longtime User
Hola,

Creo que no fue interpretada adecuadamente mi consulta..
Efectivemente cada vez que se cambia de pestaña se genera una serie de botones (5 o 6 nada mas) de forma dinamica asi utilizo el mismo Layout y lo reutilizo, por lo que no veo inconveniente en esto.
El problema era que no lograba que establecer la vista al abrir pero ya lo he logrado de esta forma

B4X:
Sub TabLayout_TabSelected(Index As Int, SelectedTab As String, Tag As Object)
    'ToastMessageShow(SelectedTab,False)
        Select Case Index
        Case 0
            panActive = PC.GetPageObject(0)
            VP_PageChanged (Index)
         End Select   
End Sub

Gracias por tu ayuda rschel
 

rscheel

Well-Known Member
Licensed User
Longtime User
Hola,

Creo que no fue interpretada adecuadamente mi consulta..
Efectivemente cada vez que se cambia de pestaña se genera una serie de botones (5 o 6 nada mas) de forma dinamica asi utilizo el mismo Layout y lo reutilizo, por lo que no veo inconveniente en esto.
El problema era que no lograba que establecer la vista al abrir pero ya lo he logrado de esta forma

B4X:
Sub TabLayout_TabSelected(Index As Int, SelectedTab As String, Tag As Object)
    'ToastMessageShow(SelectedTab,False)
        Select Case Index
        Case 0
            panActive = PC.GetPageObject(0)
            VP_PageChanged (Index)
         End Select  
End Sub

Gracias por tu ayuda rschel

Que bueno que lo ayas resuelto, saludos.
 
Top