0

我的应用中有一个带有 3 个标签的 Tabhost。选项卡都工作正常。

现在我想在选择选项卡时执行一些额外的逻辑?

例如:在我的一个选项卡中,我为用户提供了一个选项,可以按不同的顺序对事物进行排序并更新另一个选项卡。

如何获取 TabHost 的点击事件?

我已经更新了选项卡创建(活动)部分。

提前致谢。

 [Activity(Label = "My Activity")]
public class TabSearch : TabActivity 
{
    protected override void OnCreate(Bundle bundle)
    {
        try
        {
            base.OnCreate(bundle);
            SetContentView(Resource.Layout.Search_WOTab);

            /* ******************** Adding 2 Tab Controls and setting Activity classes to Tabs added ******************** */
            TabHost.TabSpec tspec;
            Intent intent;

            intent = new Intent(this, typeof(WOSearch));
            intent.AddFlags(ActivityFlags.NewTask);

            tspec = TabHost.NewTabSpec("Search");
            tspec.SetIndicator("Search", Resources.GetDrawable(Resource.Drawable.Search));
            tspec.SetContent(intent);
            TabHost.AddTab(tspec);

            intent = new Intent(this, typeof(WOFilter));
            intent.AddFlags(ActivityFlags.NewTask);
            tspec = TabHost.NewTabSpec("Filter");
            tspec.SetIndicator("Filter", Resources.GetDrawable(Resource.Drawable.Filter));
            tspec.SetContent(intent);
            TabHost.AddTab(tspec);                           
            TabHost.TabChanged += (sender, e) =>
            {
                Toast.MakeText(this, TabHost.CurrentTab.ToString(), ToastLength.Short).Show();
            };
        }
        catch (Exception ex)
        {
            Toast.MakeText(this, ex.InnerException.ToString(), ToastLength.Short);
        }
    }
4

1 回答 1

0

您可以使用TabHost.TabChanged事件。

tabHost.TabChanged += (sender, e) => {
                if (tabHost.CurrentTab == 0) {
                       // Do what you want.
                }
            };

PS:Xamarin Docs是你的朋友。

编辑:

您应该将代码修改为此...

//TabHost.TabChanged += TabHost_TabChanged;               
            TabHost.TabChanged += (sender, e) =>
            {
                Toast.MakeText(this, TabHost.CurrentTab.ToString(), ToastLength.Short).Show();
            };

TabHost.CurrentTab 是所选选项卡的索引。

于 2013-07-30T06:21:59.943 回答