Merge pull request #640 from jsoberg/#638-SettingsNpeFix

#639 Shared Preference NPE Fix
This commit is contained in:
Jakob Nixdorf 2020-09-25 06:02:11 +02:00 committed by GitHub
commit 8b6b76b1d7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 33 additions and 17 deletions

View file

@ -888,4 +888,10 @@ public class MainActivity extends BaseActivity
return super.onKeyDown(keyCode, event);
}
@Override
protected void onDestroy() {
settings.unregisterPreferenceChangeListener(this);
super.onDestroy();
}
}

View file

@ -66,10 +66,12 @@ import static org.shadowice.flocke.andotp.Utilities.Constants.EncryptionType;
public class SettingsActivity extends BaseActivity
implements SharedPreferences.OnSharedPreferenceChangeListener{
SettingsFragment fragment;
SecretKey encryptionKey = null;
boolean encryptionChanged = false;
private SettingsFragment fragment;
private SharedPreferences prefs;
private SecretKey encryptionKey = null;
private boolean encryptionChanged = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
@ -104,8 +106,8 @@ public class SettingsActivity extends BaseActivity
.replace(R.id.container_content, fragment)
.commit();
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
sharedPref.registerOnSharedPreferenceChangeListener(this);
prefs = PreferenceManager.getDefaultSharedPreferences(this);
prefs.registerOnSharedPreferenceChangeListener(this);
}
@Override
@ -277,18 +279,26 @@ public class SettingsActivity extends BaseActivity
}
}
@Override
protected void onDestroy() {
prefs.unregisterOnSharedPreferenceChangeListener(this);
prefs = null;
super.onDestroy();
}
public static class SettingsFragment extends PreferenceFragment {
PreferenceCategory catSecurity;
private PreferenceCategory catSecurity;
Settings settings;
ListPreference encryption;
Preference backupLocation;
ListPreference useAutoBackup;
CheckBoxPreference useAndroidSync;
private Settings settings;
private ListPreference encryption;
private Preference backupLocation;
private ListPreference useAutoBackup;
private CheckBoxPreference useAndroidSync;
OpenPgpAppPreference pgpProvider;
EditTextPreference pgpEncryptionKey;
OpenPgpKeyPreference pgpSigningKey;
private OpenPgpAppPreference pgpProvider;
private EditTextPreference pgpEncryptionKey;
private OpenPgpKeyPreference pgpSigningKey;
public void encryptionChangeWithDialog(final EncryptionType encryptionType) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

View file

@ -200,13 +200,13 @@ public class Settings {
PreferenceManager.setDefaultValues(context, R.xml.preferences, true);
}
public void registerPreferenceChangeListener(SharedPreferences.OnSharedPreferenceChangeListener listener) {
settings.registerOnSharedPreferenceChangeListener(listener);
}
public void unregisterPreferenceChangeListener(SharedPreferences.OnSharedPreferenceChangeListener listener) {
settings.unregisterOnSharedPreferenceChangeListener(listener);
}
public boolean getTapToReveal() {
return getTapSingle() == Constants.TapMode.REVEAL || getTapDouble() == Constants.TapMode.REVEAL;