Null point in sharedperfernces of subclass

26 Views Asked by At

I'm trying to update an older class to the androidx libraries. Previously it was written as

import android.preference.PreferenceActivity;
...
public class LatinIMESettings extends PreferenceActivity
        implements SharedPreferences.OnSharedPreferenceChangeListener,
        DialogInterface.OnDismissListener {

    @Override
    protected void onCreate(Bundle icicle) {
        ...
        SharedPreferences prefs = getPreferenceManager().getSharedPreferences();
        prefs.registerOnSharedPreferenceChangeListener(this);
    }
    ...
}

There doesn't seem to be a direct analog to PerferenceActivity in androidx so I tried to rewrite it as

import androidx.fragment.app.FragmentActivity;
import androidx.preference.PreferenceFragmentCompat;
...
public class LatinIMESettings extends FragmentActivity
        implements SharedPreferences.OnSharedPreferenceChangeListener,
        DialogInterface.OnDismissListener {

    static class LatinIMESettingsFragment extends PreferenceFragmentCompat {
        @Override
        public void onCreatePreferences(@Nullable Bundle savedInstanceState, @Nullable String rootKey) {
            setPreferencesFromResource(R.xml.prefs, rootKey);
        }
    }
    LatinIMESettingsFragment fragment = new LatinIMESettingsFragment();

    @Override
    protected void onCreate(Bundle icicle) {
        fragment = new LatinIMESettingsFragment();
        ...
        SharedPreferences prefs = fragment.getPreferenceManager().getSharedPreferences();
        prefs.registerOnSharedPreferenceChangeListener(this);
    }
    ...
}

Right now I'm getting an NullPointerException when trying to get the sharedPerfernces

This answer says I need to call after I'm done with onCreate, but I'm not exactly sure when that should be

0

There are 0 best solutions below