如何防止一次又一次地重新创建新的片段?

how to prevent recreat new Fragment again and again?

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

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

如果您不想重新创建片段,那么您应该使用视图寻呼机。它可以用作选项卡,片段不会重新创建,也不会重叠。如果你想解决重叠问题,那么这里的 Kevin 已经给出了正确的答案。

使用替换而不是添加方法将解决您的问题。

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