0

私は TabHost を持っており、タブ ウィジェットのコンテンツはアクティビティ (EditTexts などを含む) であり、タブ ホストの上に保存ボタンがあります。

場所:

-1 つのアクティビティ (タブ アクティビティ) での TabHost

-保存ボタンは TabHost アクティビティの子です

-アクティビティ内の各 TabWidget

ユーザーが保存ボタンをクリックしたときに、タブウィジェットのすべての編集テキスト、スピナーなどの値を取得してデータベースに保存したい

探してテストしてから約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) のタブ インデックスは並べ替え可能ではないことがわかりました。これは、タブ 1 にいるときにタブ 1 要素にアクセスできることを意味しますが、 tab2 要素は、tab1 の後に 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 に答える