1

TabHost ビューで、3 つのイベントがあることがわかりました。クリック、LongClick、および TabChanged。ユーザーがタブをタップしてホーム画面に戻り、同じタブをもう一度タップしたい場合があるため、TabChanged のみが機能することがわかりました。

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 に答える