1

在 TabHost 视图中,我发现有 3 个事件。单击、LongClick 和 TabChanged。我发现只有 TabChanged 有效,我想使用 Click,因为用户可能点击一个选项卡并返回主屏幕,并且可能想再次点击同一个选项卡。

这是我与 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
4

1 回答 1

2

我看到你根据你的评论找到了一个解决方案,但我想我会把它发布给未来的读者,以防它有用。

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

如果您将以下代码用于您的代码,您可以看到差异(这tbPages用作TabHost变量):

' 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
于 2011-11-17T00:09:45.717 回答