如何替换选项卡上的片段?
how to replace fragments on tab?
我有一个带有 2 个标签的 activity。我想做的是在按下每个选项卡时在 2 个片段之间进行替换。我也有2个片段:fragmentone和fragmentTwo.When选项卡一个被按下,我想显示fragmentone,当按下标签两个时,我想显示fragmenttwo。
我不确定我是否应该在 activity 中创建一个容器布局并添加 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
我该怎么做?
改用 ViewPager
。
在视图寻呼机中设置一个适配器并将其与 TabLayout
using
一起使用
tabLayout.setupWithViewPager(viewPager);
您可以按照以下方式进行:
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了解更多信息
我有一个带有 2 个标签的 activity。我想做的是在按下每个选项卡时在 2 个片段之间进行替换。我也有2个片段:fragmentone和fragmentTwo.When选项卡一个被按下,我想显示fragmentone,当按下标签两个时,我想显示fragmenttwo。 我不确定我是否应该在 activity 中创建一个容器布局并添加 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
我该怎么做?
改用 ViewPager
。
在视图寻呼机中设置一个适配器并将其与 TabLayout
using
tabLayout.setupWithViewPager(viewPager);
您可以按照以下方式进行:
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了解更多信息