[英]How can I maintain state when switching between action bar tabs / fragments?
[英]Switching fragments: should I add some action?
我有两个片段FirstFragment()
和SecondFragment()
以及一个框架R.id.frame
。 在我的代码中,我需要经常在框架R.id.frame
FirstFragment()
和SecondFragment()
之间切换。 为此,我使用以下代码。
getSupportFragmentManager().beginTransaction()
.replace(R.id.frame, new SecondFragment()).addToBackStack(null).commit();
根据最佳实践,此代码是否足够? 还是应该添加其他动作? 例如, 销毁旧片段 ,删除它或其他内容。
replace()
= remove(FirstFragment)
+ add(SecondFragment)
一旦第一个片段被删除,它将有资格进行垃圾回收。 开发人员无需采取任何其他措施。
添加片段后,您应该使用show and 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();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.