summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/accounts
diff options
context:
space:
mode:
authorAlexandra Gherghina <alexgherghina@google.com>2014-11-14 12:29:28 +0000
committerAlexandra Gherghina <alexgherghina@google.com>2014-11-17 12:12:11 +0000
commit2a3d649766fe25ab52c43fdf4885e9acb9363316 (patch)
tree596de93de53799e4ad2020671f3cb19e183eedfa /src/com/android/settings/accounts
parentb4e9a055bf5c59c1b7f42f73c7572f865d318994 (diff)
downloadpackages_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.java17
-rw-r--r--src/com/android/settings/accounts/ManageAccountsSettings.java6
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();
+ }
}
/**