aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/latin/settings/AccountsSettingsFragment.java
diff options
context:
space:
mode:
authorDan Zivkovic <zivkovic@google.com>2015-03-16 15:26:36 -0700
committerDan Zivkovic <zivkovic@google.com>2015-03-16 17:08:35 -0700
commitbff393ce13554588d3906df4e5f464199acb23ae (patch)
tree261bbec3f3a6a78e0351423ecfb326b6520a5cf3 /java/src/com/android/inputmethod/latin/settings/AccountsSettingsFragment.java
parent52dafe8c321663338ba458f7ad1a08c0c838f156 (diff)
downloadlatinime-bff393ce13554588d3906df4e5f464199acb23ae.tar.gz
latinime-bff393ce13554588d3906df4e5f464199acb23ae.tar.xz
latinime-bff393ce13554588d3906df4e5f464199acb23ae.zip
Fix NPE in AccountSettingsFragment.
Bug 19773815. Change-Id: Ib5eb27cdf385c81d1a3822836f424fa29c0bbaa8
Diffstat (limited to 'java/src/com/android/inputmethod/latin/settings/AccountsSettingsFragment.java')
-rw-r--r--java/src/com/android/inputmethod/latin/settings/AccountsSettingsFragment.java43
1 files changed, 30 insertions, 13 deletions
diff --git a/java/src/com/android/inputmethod/latin/settings/AccountsSettingsFragment.java b/java/src/com/android/inputmethod/latin/settings/AccountsSettingsFragment.java
index fe52cfe6a..48361bf8c 100644
--- a/java/src/com/android/inputmethod/latin/settings/AccountsSettingsFragment.java
+++ b/java/src/com/android/inputmethod/latin/settings/AccountsSettingsFragment.java
@@ -119,24 +119,34 @@ public final class AccountsSettingsFragment extends SubScreenFragment {
removeSyncPreferences();
} else {
disableSyncPreferences();
- final AsyncTask<Void, Void, Void> checkManagedProfileTask =
- new AsyncTask<Void, Void, Void>() {
- @Override
- protected Void doInBackground(Void... params) {
- if (ManagedProfileUtils.hasManagedWorkProfile(getActivity())) {
- removeSyncPreferences();
- } else {
- enableSyncPreferences();
- }
- return null;
- }
- };
- checkManagedProfileTask.execute();
+ new ManagedProfileCheckerTask(this).execute();
+ }
+ }
+
+ private static class ManagedProfileCheckerTask extends AsyncTask<Void, Void, Void> {
+ private final AccountsSettingsFragment mFragment;
+
+ private ManagedProfileCheckerTask(final AccountsSettingsFragment fragment) {
+ mFragment = fragment;
+ }
+
+ @Override
+ protected Void doInBackground(Void... params) {
+ if (ManagedProfileUtils.getInstance().hasManagedWorkProfile(mFragment.getActivity())) {
+ mFragment.removeSyncPreferences();
+ } else {
+ mFragment.enableSyncPreferences();
+ }
+ return null;
}
}
private void enableSyncPreferences() {
mAccountSwitcher = findPreference(PREF_ACCCOUNT_SWITCHER);
+ if (mAccountSwitcher == null) {
+ // Preference has been removed because the device has a managed profile.
+ return;
+ }
mAccountSwitcher.setEnabled(true);
mEnableSyncPreference = (TwoStatePreference) findPreference(PREF_ENABLE_SYNC_NOW);
@@ -154,6 +164,10 @@ public final class AccountsSettingsFragment extends SubScreenFragment {
private void disableSyncPreferences() {
mAccountSwitcher = findPreference(PREF_ACCCOUNT_SWITCHER);
+ if (mAccountSwitcher == null) {
+ // Preference has been removed because the device has a managed profile.
+ return;
+ }
mAccountSwitcher.setEnabled(false);
mEnableSyncPreference = (TwoStatePreference) findPreference(PREF_ENABLE_SYNC_NOW);
@@ -211,6 +225,9 @@ public final class AccountsSettingsFragment extends SubScreenFragment {
if (accountsForLogin.length > 0) {
enableSyncPreferences();
+ if (mAccountSwitcher == null) {
+ return;
+ }
mAccountSwitcher.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(final Preference preference) {