1. 代码:
FragmentFactory factory = mManager.getFragmentFactory();
fragment = factory.instantiate(mContext.getClassLoader(), className);
2.原因:(它建议开发者自定义工厂类来实例化Fragments,这个instantiateFragment() needed to maintain forward compatibility)
/**
* Instantiates the Fragment via the FragmentManager's
* {@link androidx.fragment.app.FragmentFactory}.
*
* Note that this method is <strong>not</strong> responsible for calling
* {@link Fragment#setArguments(Bundle)} on the returned Fragment instance.
*
* @param context Context providing the correct {@link ClassLoader}
* @param fragmentManager FragmentManager the Fragment will be added to
* @param className The Fragment to instantiate
* @param args The Fragment's arguments, if any
* @return A new fragment instance.
* @deprecated Set a custom {@link androidx.fragment.app.FragmentFactory} via
* {@link FragmentManager#setFragmentFactory(FragmentFactory)} to control
* instantiation of Fragments.
*/
@SuppressWarnings("DeprecatedIsStillUsed") // needed to maintain forward compatibility
@Deprecated
@NonNull
public Fragment instantiateFragment(@NonNull Context context,
@NonNull FragmentManager fragmentManager,
@NonNull String className, @SuppressWarnings("unused") @Nullable Bundle args) {
return fragmentManager.getFragmentFactory().instantiate(
context.getClassLoader(), className);
}