C# 如何在Xamarin Android上的选项卡之间传递数据?
我在viewpager中有两个选项卡。因此,在fragment1中,我输入一个文本,当在tab2中被选中时,fragment2将从fragment1中的文本中获取数据 例如:当我打开tab1->我输入一个文本是“abcd”->我打开tab2->我想从tab1(片段1)中得到一个文本是“abcd”C# 如何在Xamarin Android上的选项卡之间传递数据?,c#,android,xamarin,xamarin.android,C#,Android,Xamarin,Xamarin.android,我在viewpager中有两个选项卡。因此,在fragment1中,我输入一个文本,当在tab2中被选中时,fragment2将从fragment1中的文本中获取数据 例如:当我打开tab1->我输入一个文本是“abcd”->我打开tab2->我想从tab1(片段1)中得到一个文本是“abcd” 公共类片段1:Android.Support.V4.App.Fragment { Fragment2 Fragment2=新的Fragment2(); 创建时公共覆盖无效(Bundle savedIns
公共类片段1:Android.Support.V4.App.Fragment
{
Fragment2 Fragment2=新的Fragment2();
创建时公共覆盖无效(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
//在这里创建你的片段
}
创建视图上的公共覆盖视图(布局、充气机、视图组容器、捆绑包保存状态)
{
//使用此选项可返回此片段的自定义视图
//返回充气器。充气(Resource.Layout.YourFragment,container,false);
Singleton Singleton=Singleton.GetInstance();;
singleton.SetSource(“abcd”);
}
}公营单身人士
{
私有静态单例单例;
字符串a=null;
私人单身人士()
{
}
公共静态单例GetInstance()
{
if(singleton==null)
singleton=新singleton();
返回单身;
}
公共void集合源(字符串文本)
{
这个.a=文本;
}
公共字符串showMessage()
{
返回a;
}
}
公共类碎片2:Android.Support.V4.App.Fragment
{
公共列表数据=新列表();
公共无效添加(字符串t)
{
数据。添加(t);
}
文本视图;
创建时公共覆盖无效(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
//在这里创建你的片段
}
创建视图上的公共覆盖视图(布局、充气机、视图组容器、捆绑包保存状态)
{
//使用此选项可返回此片段的自定义视图
//返回充气器。充气(Resource.Layout.YourFragment,container,false);
//返回base.OnCreateView(充气机、容器、savedInstanceState);
返回充气机。充气(Resource.Layout.view2,容器,false);
txt=View.findviewbyd(Resource.Id.txtgetdata);
如果(数据!=null)
{
txt.Text=数据[0];
}
其他的
Toast.MakeText(Application.Context,“no”,ToastLength.Long).Show();
}
}
我试过了,但没有结果
Fragment fragment = new Fragment();
Bundle bundle = new Bundle();
bundle.putInt(key, value);
fragment.SetArguments(bundle);
在创建另一个片段时
Bundle bundle = this.GetArguments();
int myInt = bundle.GetInt(key, defaultValue);
另外,两个片段不应直接通信,而应通过活动进行通信
从开发商网站:
通常,您希望一个片段与另一个片段通信,例如
基于用户事件更改内容的示例。全部的
片段到片段的通信是通过相关的
活动。两个片段不应该直接通信
请参阅和在经过几个小时的研究/测试和调试并解决问题后,请尝试此操作
- 添加公共字符串tabFragment{get;set;}
- ie单击或导航到其他片段
- 添加这样一个方法
================================================================没有结果不明白您可以详细说明吗?
Bundle=this.Arguments;Text=bundle.GetString(“键”)代码>。此.Arguments为null您必须在导航时传递这些参数,否则它将为null引用链接没有导航时我们无法传递数据public override void OnCreate(Bundle savedInstanceState){base.OnCreate(savedInstanceState);Fragment2 fragment=new Fragment2();Bundle Bundle=new Bundle();Bundle.PutString(“key”,“abcd”);frag.Arguments=bundle;//在此处创建片段}
Bundle bundle = this.GetArguments();
int myInt = bundle.GetInt(key, defaultValue);
string tab = ((ActivityUser)Activity).tabFragmentAddUser;
FragmentAddUser fragment = (FragmentAddUser);
Activity.SupportFragmentManager.FindFragmentByTag(tab);
fragment.setValText("Hello");
viewPager.SetCurrentItem(1, true);