你好我在Android中制作了一个简单的程序,我在tablayout中选择3个Tabs当我点击第一个选项卡时它首先打开Fragment但是当我进入第二个Tab然后再次来到第一个TAb选择它重新创建并重叠我的新片段。 ..现在如何制止?
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TabLayout tabLayout = (TabLayout) findViewById(R.id.tablayout);
tabLayout.addTab(tabLayout.newTab().setText("One"), true);
tabLayout.addTab(tabLayout.newTab().setText("Two"), false);
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
if (tab.getPosition() == 0) {
Fragment fragment = new Fragment1();
chageFragment(fragment);
}
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
}
private void chageFragment(Fragment fragment) {
getFragmentManager().beginTransaction().add(R.id.container, fragment,fragment.getClass().getSimpleName()).commit();
}
答案 0 :(得分:1)
尝试更改此行以使用replace
代替add
。
getFragmentManager().beginTransaction().add(R.id.container, fragment, fragment.getClass().getSimpleName()).commit();
应该是
getFragmentManager().beginTransaction().replace(R.id.container, fragment, fragment.getClass().getSimpleName()).commit();
答案 1 :(得分:0)
如果您不希望重新创建片段,那么您应该使用视图寻呼机。它可以用作制表符,片段不会重新创建,也不会重叠。如果你想解决重叠问题,那么Kevin在这里给出了正确答案。
答案 2 :(得分:0)
使用替换而不是添加方法,它将解决您的问题。
getFragmentManager()。beginTransaction()。replace(R.id.container,fragment,fragment.getClass()。getSimpleName())。commit();