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