2011-11-16 105 views
1

在TabHost视图上,我发现有3个事件。点击,LongClick和TabChanged。我发现只有TabChanged的作品,我想使用点击,因为用户可以点击一个标签,并返回到主屏幕,并可能想要再次点击相同的选项卡。_点击TabHost视图不起作用

这是我使用TabChanged的子例程,但我想用Click来代替。也许我需要改变我的代码中的某些内容,而不仅仅是将_TabChanged更改为_Click。如果是这样,你能让我知道要改变什么吗?

Sub tbhPagesEventHandler_TabChanged 

    ToastMessageShow(tbhPages.CurrentTab,False) 

    ' These will make the code easier to read. 
    '----------------------------------------- 
    Dim intVisitsTab As Int : intVisitsTab = 0 
    Dim intMaintenanceTab As Int : intMaintenanceTab = 1 

    ' Start the activity the user wants. 
    '----------------------------------- 
    Select tbhPages.CurrentTab 

     Case intVisitsTab 
      StartActivity("Visits") 

     Case intMaintenanceTab 
      StartActivity("Maintenance") 
    End Select 
End Sub 
+0

我从埃雷尔,你不能在2周不同的活动具有相同的TabHost名发现出来,所以我改名的其他活动的TabHosts之一,所有运作良好。 –

回答

2

我看到你找到了一个解决方案,根据你的评论,但认为我会张贴这为未来的读者,以防万一它是有用的。

当单击TabHost选项卡的内容时触发'TabHost.Click'事件,而不是选项卡本身。

如果您使用您的代码下面,你可以看到其中的差别(这使用tbPagesTabHost变量):

' Displays the 0-based index of the tab being activated 
Sub tbPages_TabChanged 
Msgbox("Current tab is " & tbPages.CurrentTab, "") 
End Sub 

' Fires when you click inside the content of the tab page, 
' not on the tab itself. 
Sub tbPages_Click 
    Msgbox("Current tab is " & tbPages.CurrentTab, "")   
End Sub 

这意味着你可以使用CurrentTab属性来确定用户具有哪些页面选择,并做出相应的反应:

Sub tbPages_TabChanged 
    Dim TabIdx as Int 
    TabIdx = tbPages.CurrentTab ' Get the tab just activated 
    Select TabIdx 
    Case 0 
     ' First tab is now active 
    Case 1 
     ' Second tab active 
    Case 2 
     ' Third tab active 
    Case Else 
     MsgBox("Something is badly wrong! We have only three tabs", "HEY") 
    End Select 
End Sub