diff options
author | Alexandra Gherghina <alexgherghina@google.com> | 2014-11-14 12:29:28 +0000 |
---|---|---|
committer | Alexandra Gherghina <alexgherghina@google.com> | 2014-11-17 12:12:11 +0000 |
commit | 2a3d649766fe25ab52c43fdf4885e9acb9363316 (patch) | |
tree | 596de93de53799e4ad2020671f3cb19e183eedfa /src/com/android/settings/accounts | |
parent | b4e9a055bf5c59c1b7f42f73c7572f865d318994 (diff) | |
download | packages_apps_Settings-2a3d649766fe25ab52c43fdf4885e9acb9363316.zip packages_apps_Settings-2a3d649766fe25ab52c43fdf4885e9acb9363316.tar.gz packages_apps_Settings-2a3d649766fe25ab52c43fdf4885e9acb9363316.tar.bz2 |
Fix NPE caused by status update outside activity lifecycle
Bug: 18373656
Change-Id: I3c7db15df7c47b65a42a13fc7a3a077c3ad48f77
Diffstat (limited to 'src/com/android/settings/accounts')
-rw-r--r-- | src/com/android/settings/accounts/AccountSyncSettings.java | 17 | ||||
-rw-r--r-- | src/com/android/settings/accounts/ManageAccountsSettings.java | 6 |
2 files changed, 18 insertions, 5 deletions
diff --git a/src/com/android/settings/accounts/AccountSyncSettings.java b/src/com/android/settings/accounts/AccountSyncSettings.java index 12a63e6..fe45299 100644 --- a/src/com/android/settings/accounts/AccountSyncSettings.java +++ b/src/com/android/settings/accounts/AccountSyncSettings.java @@ -24,6 +24,7 @@ import android.accounts.AccountManagerCallback; import android.accounts.AccountManagerFuture; import android.accounts.AuthenticatorException; import android.accounts.OperationCanceledException; +import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.content.ContentResolver; @@ -313,12 +314,18 @@ public class AccountSyncSettings extends AccountPreferenceBase { private void startSyncForEnabledProviders() { requestOrCancelSyncForEnabledProviders(true /* start them */); - getActivity().invalidateOptionsMenu(); + final Activity activity = getActivity(); + if (activity != null) { + activity.invalidateOptionsMenu(); + } } private void cancelSyncForEnabledProviders() { requestOrCancelSyncForEnabledProviders(false /* cancel them */); - getActivity().invalidateOptionsMenu(); + final Activity activity = getActivity(); + if (activity != null) { + activity.invalidateOptionsMenu(); + } } private void requestOrCancelSyncForEnabledProviders(boolean startSync) { @@ -367,7 +374,10 @@ public class AccountSyncSettings extends AccountPreferenceBase { protected void onSyncStateUpdated() { if (!isResumed()) return; setFeedsState(); - getActivity().invalidateOptionsMenu(); + final Activity activity = getActivity(); + if (activity != null) { + activity.invalidateOptionsMenu(); + } } private void setFeedsState() { @@ -440,7 +450,6 @@ public class AccountSyncSettings extends AccountPreferenceBase { syncPref.setChecked(oneTimeSyncMode || syncEnabled); } mErrorInfoView.setVisibility(syncIsFailing ? View.VISIBLE : View.GONE); - getActivity().invalidateOptionsMenu(); } @Override diff --git a/src/com/android/settings/accounts/ManageAccountsSettings.java b/src/com/android/settings/accounts/ManageAccountsSettings.java index ef3e40b..85ecd90 100644 --- a/src/com/android/settings/accounts/ManageAccountsSettings.java +++ b/src/com/android/settings/accounts/ManageAccountsSettings.java @@ -231,7 +231,11 @@ public class ManageAccountsSettings extends AccountPreferenceBase @Override protected void onSyncStateUpdated() { showSyncState(); - getActivity().invalidateOptionsMenu(); + // Catch any delayed delivery of update messages + final Activity activity = getActivity(); + if (activity != null) { + activity.invalidateOptionsMenu(); + } } /** |