DialogFragment
には2つのタブがあり、各タブにはフラグメントが表示され、動的に作成され、ChildFragmentTransaction
で追加されます。タブ内のフラグメントは初期ロード時に表示されません
私のDialogFragment
の最初の読み込みでは、すべてがを除いてと表示されていますが、タブ間を切り替えた後に断片が正しく表示されます。横長と縦長の間で変更する場合も同じことが起こります。最初にロードするとタブのみが表示されますが、切り替えるとフラグメントが表示されます。
ここに、タブを設定するためのコードがあります。
public override View OnCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState)
{
View v = inflater.Inflate(Resource.Layout.Game_Over_Dialog1, parent, false);
PlayerTabs = v.FindViewById<TabHost>(Resource.Id.PlayerTabs);
GameOverOk = v.FindViewById<Button>(Resource.Id.CloseGameOver);
PlayerTabs.Setup();
TabHost.TabSpec spec = PlayerTabs.NewTabSpec(player1.Name);
spec.SetContent(Resource.Id.PlayerDataContainer);
spec.SetIndicator(player1.Name);
PlayerTabs.AddTab(spec);
spec = PlayerTabs.NewTabSpec(player2.Name);
spec.SetContent(Resource.Id.PlayerDataContainer);
spec.SetIndicator(player2.Name);
PlayerTabs.AddTab(spec);
Dialog.SetTitle("Game Over");
Dialog.SetCancelable(true);
GameOverOk.Click += delegate { Dialog.Dismiss(); };
PlayerTabs.TabChanged += PlayerTabs_TabChanged;
ChildFragmentManager.BeginTransaction().Add(Resource.Id.PlayerDataContainer, player1Frag).Commit();
return v;
}
私はonStart
で、前のタブを設定した後、様々な場所でChildFragmentTransaction
を配置しようとしてきたが、私はまた、プログラムで選択したタブを変更しようとしましたが、何も働きました。
最初にダイアログを表示したときにフラグメントが表示されない理由についてのアイデアはありますか?任意の回避策、または私は何かが些細なものを逃している?
ありがとうございます!
「spec」は 'setCurrentTab'を持たない' TabSpec'です。それがちょうどスペルミスだったならば、私は 'TabWidget'で試してみるでしょう。 – Stefan
何も変わっていません – Stefan
申し訳ありません、PlayersTabで呼び出される必要があります – atwrk