【问题标题】:Switching fragments: should I add some action?切换片段:我应该添加一些动作吗?
【发布时间】:2017-07-06 20:19:21
【问题描述】:
我有两个片段FirstFragment() 和SecondFragment() 和一个框架R.id.frame。
在我的代码中,我需要经常在框架R.id.frame 内的FirstFragment() 和SecondFragment() 之间切换。为此,我使用以下代码。
getSupportFragmentManager().beginTransaction()
.replace(R.id.frame, new SecondFragment()).addToBackStack(null).commit();
根据最佳实践,这段代码是否足够?还是我应该添加一些其他操作?例如,销毁旧片段,将其删除等等。
【问题讨论】:
标签:
java
android
android-fragments
fragmentmanager
【解决方案1】:
replace() = remove(FirstFragment) + add(SecondFragment)
一旦第一个片段被删除,它将有资格进行垃圾回收。开发人员无需执行额外操作。
【解决方案2】:
您应该在添加片段后使用显示和隐藏。这不会在您每次在片段之间切换时重新创建您的片段。
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();
}