0

我有一个动态添加选项卡的选项卡主机。我的问题是使用另一个选项卡值更新一个选项卡中的数据。

例如:我在 TabHost 活动页面中添加了两个名为“搜索和过滤”的选项卡和意图。当我从过滤器选项卡中的“站点和设备”等微调器中选择一些值时,我想使用过滤器选项卡中的指定选择来更新搜索选项卡列表视图。

我附上了我的示例代码。请验证它并建议我。

TabHost 活动:

public class TabSearch : TabActivity 
{
    protected override void OnCreate(Bundle bundle)
    {
            base.OnCreate(bundle);
            SetContentView(Resource.Layout.Search_WOTab);

            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) =>
            {
                Spinner workorder = FindViewById<Spinner>(Resource.Id.sp_site);
                object Data;
                //Here always showing null to spinner control
                if (workorder!=null)
                    Data = workorder.SelectedItem;
                Toast.MakeText(this, TabHost.CurrentTab.ToString(), ToastLength.Short).Show();
            };
    }
}
4

1 回答 1

0

我会做什么:

  1. 在 WOFilter 选项卡中:

    • 当您选择一个元素时,您会更新一个 app_wide var(静态、sharedpref、数据库,如您所愿)让我们说“wo_filter_value”。这样,WOFilter Activity 就不必知道关于 WOSearch Activity 的任何信息
  2. 在 WOSearch 选项卡中:

    • 仅在“onCreate”方法中执行初始化代码(只需一次)
    • 在“onResume”方法中做列表显示部分,读取更新的“wo_filter_value”并进行相应的过滤。

由于同时只显示一个选项卡,因此在您更改另一个选项卡上的过滤器后,您的活动将始终必须通过“OnResume”功能才能重新显示列表。

于 2013-07-31T06:32:45.070 回答