我有两个片段FirstFragment()
和SecondFragment()
以及一个R.id.frame
帧。
在我的代码中,我需要经常在框架FirstFragment()
内的SecondFragment()
和R.id.frame
之间切换。为此,我使用以下代码。
getSupportFragmentManager().beginTransaction()
.replace(R.id.frame, new SecondFragment()).addToBackStack(null).commit();
根据最佳实践,这段代码足够吗?或者我应该添加一些其他动作?例如,销毁旧片段,删除它或者什么。
答案 0 :(得分:0)
class Place {
var placeId: String!
var vicinity: String!
var _placeId: String {
if placeId == nil {
placeId = ""
}
return placeId
}
var _vicinity: String {
if vicinity == nil {
vicinity = ""
}
return vicinity
}
init( place: [String:Any]) {
if let ids = place["place_id"] as? String {
self.placeId = ids
}
if let vicinities = place["vicinity"] as? String {
self.vicinity = vicinities
}
}
}
= replace()
+ remove(FirstFragment)
删除第一个片段后,它就有资格进行垃圾回收。开发人员无需采取额外措施。
答案 1 :(得分: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();
}