2013-07-31 91 views
0

我有一個tabhost動態添加標籤。我的問題是使用另一個選項卡值更新一個選項卡中的數據。在TabHost控件的活動之間傳遞數據

例如:我有兩個名爲'Search & Filter'的選項卡,並在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(); 
      }; 
    } 
} 
+0

請刪除所有與問題無關的代碼 - 太多了。 –

+0

我已更新我的示例代碼。請驗證它。 – Kathir

+0

只有一個標籤會同時顯示正確嗎? – baramuse

回答

0

我會做什麼:

  1. 在WOFilter標籤

    當您選擇更新app_wide VAR元素(靜態
    • , sharedpref,數據庫,如你所願)讓我們說「wo_filter_value」。這樣一來,WOFilter活動不必瞭解WOSearch活動
  2. 在WOSearch標籤

    什麼:

    • 只是做了「的onCreate」方法的初始化代碼(這是什麼需要只能使用一次)
    • 在「onResume」方法中執行列表顯示部分,讀取更新的「wo_filter_value」並相應地進行過濾。

由於只顯示在同一時間一個標籤,你的行爲將永遠有你已經改變了過濾器的其他選項卡上後再次顯示列表之前要經過「的onResume」功能。

+0

雅這是個好主意。但在我的一個場景中,我將擁有7個選項卡,並且將擁有如此多的控件。我如何分享複雜的數據到標籤? – Kathir