0

我有一个 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 元素,其他方式,我的选项卡导航顺序,制作选项卡索引

也许我只能在之前显示标签元素时才能访问它们。

我如何在不需要加载的情况下访问选项卡内容,或者如何在不导航到它们的情况下加载它们以获得可访问性?

有人说我只能用碎片做到这一点,我不知道


每个人都可以帮助我吗?坦克

4

1 回答 1

2

您可以像以下示例一样访问活动中的视图:

public class Act1_Principale extends TabActivity implements OnTabChangeListener {
    private TabHost tabHost;

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.lay_principale);
        tabHost = getTabHost();

        tabHost.addTab(createTab(Act1.class, title, drawable));
        tabHost.addTab(createTab(Act2.class, title, drawable));
        tabHost.addTab(createTab(Act3.class, title, drawable));
        tabHost.addTab(createTab(Act4.class, title, drawable));

        btn.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                tabHost.getTabContentView().getChildAt(0).
                findViewById(R.id.btnAdd);
            }
        });
    }

    private TabSpec createTab(final Class<?> intentClass, final String tag, final int drawable) {
        final Intent intent = new Intent().setClass(this, intentClass);
        final View tab = LayoutInflater.from(getTabHost().getContext()).inflate(R.layout.tab, null);

        ((ImageView) tab.findViewById(R.id.tab_icon)).setImageResource(drawable);
        return getTabHost().newTabSpec(tag).setIndicator(tab).setContent(intent);
    }
}
于 2013-02-11T15:28:53.043 回答