如何替换标签上的片段?

时间:2017-10-24 18:54:38

标签: android android-fragments android-tabhost android-tablayout

我有一个包含2个标签的活动。我试图做的是在每个标签被按下时替换2个片段。我还有2个片段:fragmentOne和fragmentTwo。当按下tab一个我要显示fragmentOne时,当按下tab 2时我想显示fragmentTwo。 我不确定我是否应该在活动中创建一个容器布局,并添加了fragmentOne和fragmentTwo,或者还有另外一种方法可以做到这一点?

这是我的代码

    public class InboxActivity extends AppCompatActivity {
private TabLayout tabLayout;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_inbox);

    tabLayout = (TabLayout)findViewById(R.id.tabLayout);

    tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {
            Fragment fragment;
            int position = tab.getPosition();
            //requests = position - 0
            //invitations = position - 1
            switch (position){
                case 0:
                     break;
                case 1:
                    break;
            }
        }

        @Override
        public void onTabUnselected(TabLayout.Tab tab) {

        }

        @Override
        public void onTabReselected(TabLayout.Tab tab) {

        }
    });
}

当case为0时我想显示fragmentOne

当情况i 1我想要展示fragmentTwo

我该怎么做?

2 个答案:

答案 0 :(得分:1)

您可以按照以下方式执行此操作:

public void onTabSelected(TabLayout.Tab tab) {
    Fragment fragment = null;

    switch (tab.getPosition()) {
        case 0:
        fragment = new FirstFragment();
        break;

        case 1:
        fragment = new SecondFragment();
        break;      
    }

    FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    ft.replace(R.id.simpleFrameLayout, fragment);
    ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
    ft.commit();
}

以下是tutorial以获取更多信息

答案 1 :(得分:0)

请改用ViewPager

在视图寻呼机中设置适配器,并使用<{1}}使用

TabLayout