0

我有两个片段FirstFragment()SecondFragment()和一个框架R.id.frame。 在我的代码中,我需要在框架R.id.frame内的FirstFragment()SecondFragment()之间经常切换。为此,我使用下面的代码。切换片段:我应该添加一些操作吗?

getSupportFragmentManager().beginTransaction() 
    .replace(R.id.frame, new SecondFragment()).addToBackStack(null).commit(); 

根据最佳实践,此代码是否足够?或者我应该添加一些其他操作?例如,破坏旧片段,删除它或什么。

回答

0

replace() = remove(FirstFragment) + add(SecondFragment)

只要第一片段被除去,这将是符合垃圾回收。开发人员不需要额外的操作。

0

添加碎片后,您应该使用show和hide。每次在片段之间切换时,这不会重新创建片段。

private void addFragment(Fragment fragment, Class<? extends Fragment> tag) { 
     FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 
     transaction.add(R.id.content, fragment, tag.getSimpleName()).addToBackStack(tag.getName() 
     ).commit(); 
    } 
private void showFragment(Fragment fragment) { 
     if (fragment == null) { 
      return; 
     } 
     FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 
     transaction.show(fragment).commit(); 
    } 

private void hideFragment(Fragment fragment) { 
     if (fragment == null) { 
      return; 
     } 
     FragmentTransaction transaction = getSupportFragmentManager() 
       .beginTransaction(); 
     transaction.hide(fragment).commit(); 
    } 
相关问题