私は 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 に移動した場合のみ、その他の手段、タブの順序を移動、タブ インデックスを作成
たぶん、以前に表示されたときにのみタブ要素にアクセスできます。
ロードせずにタブのコンテンツにアクセスする方法、またはそれらに移動せずにアクセシビリティのためにそれらをロードする方法を教えてください。
誰かが私に言った、私はフラグメントでしかこれを行うことができない、私は知らない
誰もが私を助けることができますか?タンク