2017-01-18 6 views
2

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を配置しようとしてきたが、私はまた、プログラムで選択したタブを変更しようとしましたが、何も働きました。

最初にダイアログを表示したときにフラグメントが表示されない理由についてのアイデアはありますか?任意の回避策、または私は何かが些細なものを逃している?

ありがとうございます!

答えて

3

PlayersTab.setCurrentTab(0)(引数はインデックス番号なので、この場合は0または1です)を追加すると、このトリックを行う必要があります。私は2番目の後に追加したいと思います。

PlayerTabs.AddTab(spec); 
+0

「spec」は 'setCurrentTab'を持たない' TabSpec'です。それがちょうどスペルミスだったならば、私は 'TabWidget'で試してみるでしょう。 – Stefan

+0

何も変わっていません – Stefan

+0

申し訳ありません、PlayersTabで呼び出される必要があります – atwrk

関連する問題