Android 在UI片段重新创建期间,是否不再需要对headless片段调用setTargetFragment?

Android 在UI片段重新创建期间,是否不再需要对headless片段调用setTargetFragment?,android,android-fragments,Android,Android Fragments,使用无头片段技术(fragment withsetRetainedInstance(true))让长时间运行的任务处理UI更新是很常见的 我正在使用支持库 许多年前,当重新创建UIFragment时,以下代码片段是必不可少的,以确保headless fragment引用了最新的UIFragment实例 // UIFragment is having configuration change. // UIFragment is being re-created. // Make sure hea

使用无头片段技术(fragment with
setRetainedInstance(true)
)让长时间运行的任务处理UI更新是很常见的

我正在使用支持库

许多年前,当重新创建
UIFragment
时,以下代码片段是必不可少的,以确保headless fragment引用了最新的
UIFragment
实例

// UIFragment is having configuration change.
// UIFragment is being re-created.
// Make sure headlessFragment is having latest instance of UIFragment.
headlessFragment.setTargetFragment(this, 0);
然而,今天当我使用最新的支持库
v7:25.0.0
重新测试代码时,我意识到这样的代码不再是必需的。我可以用英文写

public class UIFragment extends Fragment {
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        headlessFragment = (HeadlessFragment)fm.findFragmentByTag(HEADLESS_FRAGMENT);

        if (headlessFragment == null) {
            // This happens during UIFragment first-time creation.

            headlessFragment = HeadlessFragment.newInstance();
            headlessFragment.setTargetFragment(this, 0);
            fm.beginTransaction().add(headlessFragment , HEADLESS_FRAGMENT).commitAllowingStateLoss();
        } else {
             // UIFragment is being created.
             //
             // Event without calling headlessFragment.setTargetFragment,
             // headlessFragment.getTargetFragment will *magically* 
             // return latest instance of UIFragment.
        }
    }
}
首先,我怀疑,在最新的支持库中,
headlessFragment.setTargetFragment
在重新创建
UIFragment
的过程中被自动调用

但是,当我尝试通过使用一些日志覆盖
headlessFragment.setTargetFragment
进行确认时,我意识到在
UIFragment
重新创建期间没有调用它

请问,
headlessFragment
如何才能神奇地获得最新的重新创建的
UIFragment

public class UIFragment extends Fragment {
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        headlessFragment = (HeadlessFragment)fm.findFragmentByTag(HEADLESS_FRAGMENT);

        if (headlessFragment == null) {
            // This happens during UIFragment first-time creation.

            headlessFragment = HeadlessFragment.newInstance();
            headlessFragment.setTargetFragment(this, 0);
            fm.beginTransaction().add(headlessFragment , HEADLESS_FRAGMENT).commitAllowingStateLoss();
        } else {
             // UIFragment is being created.
             //
             // Event without calling headlessFragment.setTargetFragment,
             // headlessFragment.getTargetFragment will *magically* 
             // return latest instance of UIFragment.
        }
    }
}