我有一个 TabHost,我的标签小部件内容是活动(包含 EditTexts 等)和标签主机顶部的保存按钮。
地点:
-TabHost 在一个活动中(选项卡活动)
-保存按钮是 TabHost 活动的子项
- 活动中的每个 TabWidget
我希望当用户单击保存按钮时,在 tabwidgets 中获取所有编辑文本、微调器等值并将它们保存在数据库中
我正在搜索和测试大约 3 天!
编辑
代码:
#region tabs
TabHost.TabSpec spec; // Resusable TabSpec for each tab
Intent intent; // Reusable Intent for each tab
//--------------------------------
intent = new Intent(this, typeof(FrmMelkPersonalInfoTabActivity));
intent.AddFlags(ActivityFlags.NewTask);
spec = TabHost.NewTabSpec("FrmMelkPersonalInfoTabActivity");
spec.SetIndicator("مشخصات شخص", Resources.GetDrawable(Resource.Drawable.tab1));
View tab = LayoutInflater.From(TabHost.Context).Inflate(Resource.Id.ta, null);
spec.SetContent(intent);
TabHost.AddTab(spec);
//--------------------------------
intent = new Intent(this, typeof(FrmMelkAbaadZaminInfoTabActivity));
intent.AddFlags(ActivityFlags.NewTask);
spec = TabHost.NewTabSpec("FrmMelkAbaadZaminInfoTabActivity");
spec.SetIndicator("ابعاد", Resources.GetDrawable(Resource.Drawable.tab2));
spec.SetContent(intent);
TabHost.AddTab(spec);
TabHost.CurrentTab = 0;
Button btnSave = FindViewById<Button>(Resource.Id.btnSave);
btnSave.Click += new EventHandler(btnSave_Click);
void btnSave_Click(object sender, EventArgs e)
{
LinearLayout llMain = (LinearLayout)TabHost.GetChildAt(0);
FrameLayout flTabContents = (FrameLayout)llMain.GetChildAt(2);
var tab1 = flTabContents.GetChildAt(0);
string father = tab1.FindViewById<EditText>(Resource.Id.txtFather_Name).Text;
}
由@K。Oulebsir 帮助,我使用 GetChildAt 方法并且可以访问我的内容,但在测试中,我发现 GetChildAt(index) 的选项卡索引不可排序,这意味着当我在 tab1 中时,我可以访问 tab1 元素,但我可以访问仅当我在 tab1 之后导航到 tab2 时才使用 tab2 元素,其他方式,我的选项卡导航顺序,制作选项卡索引
也许我只能在之前显示标签元素时才能访问它们。
我如何在不需要加载的情况下访问选项卡内容,或者如何在不导航到它们的情况下加载它们以获得可访问性?
有人说我只能用碎片做到这一点,我不知道
每个人都可以帮助我吗?坦克