我遇到的问题是方法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>
我在这里做错了什么?
答案 0 :(得分:0)
只有可能导致这种情况的问题是,如果您使用嵌套的PreferenceScreens并且每个屏幕都打开一个片段,则findPreference可能会失败,因为嵌套片段可能不包含您使用findPreference查找的首选项。