选项卡内的片段不会在初始加载时显示

时间:2017-01-18 03:53:00

标签: android android-fragments tabs xamarin.android

我有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;
    }

我在ChildFragmentTransaction设置标签之前和之后尝试将onStart放置在不同的地方,我也尝试过以编程方式更改所选标签,但没有任何效果。

有关为什么在第一次显示对话框时我无法看到片段的任何想法?任何变通办法,或者我错过了一些微不足道的事情?

谢谢!

1 个答案:

答案 0 :(得分:3)

添加 PlayerTabs.AddTab(spec); (参数是索引号,因此在这种情况下为0或1)应该可以解决问题。我会在第二次

之后添加它
engine