Android - 单个片段暂停和恢复,但没有销毁

时间:2017-05-02 12:20:11

标签: android android-fragments onresume onpause

我正在构建一个完全由片段和单个活动组成的应用程序。我有这个用例,其中每个片段应该被初始化一次,并且每次被替换它都得到resume/paused。我认为只有一个片段实例可以完成工作,但它没有按预期发生。

我想知道如何实现这一点,以便每次只有一个片段实例获得resume/pause

1 个答案:

答案 0 :(得分:1)

使用此方法切换Fragment s

 void switchFragment(@NonNull Fragment fragment, boolean addToBackStack) {
        final String NAME = fragment.getClass().getName();
        final FragmentManager fm = getSupportFragmentManager();

        final boolean fragmentPopped = fm.popBackStackImmediate(NAME, 0);

        if (fragmentPopped || fm.findFragmentByTag(NAME) != null) {
            return;
        }

        if (addToBackStack) {
            fm.beginTransaction()
                    .replace(mContainerResId, fragment, NAME)
                    .commit();
        } else {
            fm.beginTransaction()
                    .replace(mContainerResId, fragment, NAME)
                    .addToBackStack(NAME)
                    .commit();
        }
    }

Fragment类创建视图,如下所示

private View rootView;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    if (rootView == null) {
      rootView = inflater.inflate(R.layout.your_layout, container, false);
    }
    return rootView;
}