如何重置片段内的参数

时间:2019-06-10 15:59:48

标签: android android-fragments arguments

我有一个带有选项卡布局的活动,其中包含4个片段,但一次仅包含一个。该片段显示了不同游戏的用户统计信息。首先,用户从活动的“回收者”视图中选择一个用户名。这将显示game1的用户统计信息。然后,用户可以按下显示下一个玩家的统计信息的下一个按钮,依此类推。但是,当用户滑动选项卡布局时,我希望游戏二的统计信息显示他们当前在游戏一中正在查看的玩家的统计信息,但该片段使用的是原始参数,即他们在游戏中选择的用户名。从回收者视图开始。

我使用的适配器是在开始时以及每当用户滑动选项卡布局时都会调用的适配器:

   public void setName (String name ) {
    nameToFind = name;
}

@Override public Fragment getItem(int position) {
    switch (position){


        case 0:
            ViewGameOneStatsFragment gameOneStatsFragment = new ViewGameOneStatsFragment();
            Bundle args = new Bundle();
            args.putString("nameToFind", nameToFind);
            gameOneStatsFragment.setArguments(args);
            return gameOneStatsFragment;
        case 1:
            ViewGameTwoStatsFragment gameTwoStatsFragment = new ViewGameTwoStatsFragment();
            Bundle argsgameTwo = new Bundle();
            argsgameTwo.putString("nameToFind", nameToFind);
            gameTwoStatsFragment.setArguments(argsgameTwo);
            return gameTwoStatsFragment;
        case 2:
            ViewGameThreeStatsFragment gameThreeStatsFragment = new ViewGameThreeStatsFragment();
            Bundle argsgameThree = new Bundle();
            argsgameThree.putString("nameToFind", nameToFind);
            gameThreeStatsFragment.setArguments(argsgameThree);
            return gameThreeStatsFragment;

        case 3:
            ViewGameFourStatsFragment gameFourStatsFragment = new ViewGameFourStatsFragment();
            Bundle argsgameFour = new Bundle();
            argsgameFour.putString("nameToFind", nameToFind);
            gameFourStatsFragment.setArguments(argsgameFour);
            return gameFourStatsFragment;
    }
    return null;
}

我尝试创建适配器类的实例来重置nameToFind,但由于其构造函数需要一个片段管理器而无法进入片段getSupportFragmentManager(),因此我无法这样做选项。

这是在onCreate方法中检索参数的片段之一

 @Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    assert getArguments() != null;
    this.mUser = getArguments().getString("nameToFind");
    //OnCreateView is then called.

}

我有什么选择?

0 个答案:

没有答案