切换片段:我应该添加一些动作吗?

时间:2017-07-06 20:19:21

标签: java android android-fragments fragmentmanager

我有两个片段FirstFragment()SecondFragment()以及一个R.id.frame帧。 在我的代码中,我需要经常在框架FirstFragment()内的SecondFragment()R.id.frame之间切换。为此,我使用以下代码。

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

根据最佳实践,这段代码足够吗?或者我应该添加一些其他动作?例如,销毁旧片段,删除它或者什么。

2 个答案:

答案 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();
    }