gpt4 book ai didi

android - 如何防止一次又一次地重新创建新的 fragment ?

转载 作者:行者123 更新时间:2023-11-30 01:29:19 27 4
gpt4 key购买 nike

你好,我在 Android 中制作了一个简单的程序,其中我在 tablayout 中使用了 3 个选项卡当我单击第一个选项卡时,它会打开第一个 fragment 但是当我转到第二个选项卡然后再次来到第一个选项卡时选择它重新创建并重叠我的新 fragment 。 ..现在如何阻止它??

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();
}

最佳答案

尝试将此行更改为使用 replace 而不是 add

getFragmentManager().beginTransaction().add(R.id.container, fragment, fragment.getClass().getSimpleName()).commit();

应该是

getFragmentManager().beginTransaction().replace(R.id.container, fragment, fragment.getClass().getSimpleName()).commit();

关于android - 如何防止一次又一次地重新创建新的 fragment ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35980663/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com