方法findPreference始终返回null

时间:2018-02-28 06:10:53

标签: android

我遇到的问题是方法findPreference始终返回null。我已多次检查密钥(即“pref_about”)是否正确,它是。

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

private void initPreferences() {
    Preference myPref = findPreference("pref_about");
    myPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
        public boolean onPreferenceClick(Preference preference) {
            mListener.onFragmentInteraction(TAG, "btn_about");
            return true;
        }
    });
}

相应的XML文件是:

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
    <Preference android:title="About" android:key="pref_about "/>
</PreferenceScreen>

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

只有可能导致这种情况的问题是,如果您使用嵌套的PreferenceScreens并且每个屏幕都打开一个片段,则findPreference可能会失败,因为嵌套片段可能不包含您使用findPreference查找的首选项。