C# 如何在选项卡之间保持对对象的引用?

C# 如何在选项卡之间保持对对象的引用?,c#,android,tabs,xamarin.android,fragment-tab-host,C#,Android,Tabs,Xamarin.android,Fragment Tab Host,我目前在实现FragmentTabHost时遇到了一些问题,在其选项卡之间共享数据 我将包含FragmentTabHost的片段设置为: public class TTTabContainerFragment: Android.Support.V4.App.Fragment{ TTDataSet SharedData; //OnCreate and initialization... public override View OnCreateView(LayoutInflater

我目前在实现FragmentTabHost时遇到了一些问题,在其选项卡之间共享数据

我将包含FragmentTabHost的片段设置为:

public class TTTabContainerFragment: Android.Support.V4.App.Fragment{
  TTDataSet SharedData;

  //OnCreate and initialization...

 public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
 {
      FragmentHost = new FragmentTabHost(Activity);
      FragmentHost.Setup(Activity, ChildFragmentManager);
      FragmentHost.AddTab(FragmentHost.NewTabSpec("tab1").SetIndicator(Resources.GetString(Resource.String.BOOKHOUR_ITEM_BOOKING)), new TTBookHourFragment().Class, TTDataSets.CreateArgumentBundle(SharedData));
      FragmentHost.AddTab(FragmentHost.NewTabSpec("tab2").SetIndicator(Resources.GetString(Resource.String.BOOKHOUR_ITEM_INFO)), new TTBookHourInfoFragment().Class, TTDataSets.CreateArgumentBundle(SharedData));
      FragmentHost.AddTab(FragmentHost.NewTabSpec("tab3").SetIndicator(Resources.GetString(Resource.String.BOOKHOUR_ITEM_EXPENSES)), new TTBookHourExpenseDialog().Class, TTDataSets.CreateArgumentBundle(SharedData));
      return FragmentHost;
 }

 public override void OnDestroyView()
 {
       base.OnDestroyView();
       FragmentHost = null;
 }
这些选项卡中的每一个都需要访问并能够操作SharedData数据集中的数据。虽然我可以通过将SharedData集序列化/打包成一个包来将数据发送到选项卡片段,但容器片段中对原始数据集的引用将丢失,并且在选项卡片段中创建了一个新对象。因此,选项卡之间不共享数据操作


有没有办法在3个选项卡之间共享数据,以确保对数据的操作在它们之间持续?最好不要求助于静态变量。

您可以在活动中添加支持方法。片段始终显示在活动中。因此,使用活动,您可以共享您想要的数据。希望碎片在同一活动中加载

class MyActivity extends Activity{
 int a;
   void setData(int a){
   this.a=a
   }

   int getData(){
    return a;
   }


}


class MyFragment extends Fragent{

  void onViewCreated{
    ((MyActivity)getActivity()).getData(); //Access data
  }
}
另一种方法是声明类并保持数据为静态,这样所有组件都可以访问它

或者,您可以在应用程序类中定义可从应用程序上下文(即android的每个组件)访问的数据