PreferenceFragmentCompat 片段在膨胀后 activity OnCreate 期间的 mPreferenceManager 为空

PreferenceFragmentCompat Fragment has mPreferenceManager null during activity OnCreate after inflating

我不太明白这一点。我在库的代码中为库的 onCreate(@Nullable Bundle savedInstanceState) 方法设置了一个断点,就像它没有被调用一样。

我的片段代码超级简单

public class MySettingsFragment extends PreferenceFragmentCompat {
    @Override
    public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
        setPreferencesFromResource(R.xml.preferences, rootKey);
    }
}

我的activity也没那么大

public class PreferencesActivity extends AppCompatActivity
{
    MySettingsFragment frag;

    @SuppressWarnings("unused")
    @Override
    public void onCreate(@Nullable Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.settings_activity);

        frag = new MySettingsFragment();

        getSupportFragmentManager()
                .beginTransaction()
                .replace(R.id.settings_container, frag)
                .commit();
                
        // frag has null mPreferenceManager here
        // so some stuff I call from it will crash
    }

    // ...    
}

我可以在应用程序上查看并加载我的设置,但我想在那里获取 frag 并阅读 frag.getPreferenceScreen();frag.findPreference(PREFERENCE_UID) 之类的内容,但 frag 有一个 null mPreferenceManager 所以大多数事情失败了。

我需要阅读这些内容,因为我正在将我的应用程序的一些设置与本机部分同步,而且大多数首选项教程都太简单了。知道为什么 mPreferenceManager 在 Activity OnCreate 期间在我的片段中为 null 吗?

我发现 fragment 自己的 onCreate 方法上的 mPreferenceManager 不为空,所以我把 运行 上 Activity 的 onCreate 方法上我想要的东西移到了那里。