From 5cdc93725152e838d3213ca6ed1db92ae40fd0e3 Mon Sep 17 00:00:00 2001 From: Amith Yamasani Date: Wed, 14 Nov 2012 16:23:40 -0800 Subject: [PATCH] Fix a race condition when switching between settings panels The fragment was removed while the images were being loaded, so the activity was null. This fix holds on to the Resources object. Bug: 7490425 Change-Id: Ic2d8dd3c620fc34ce8255104001e17b39f828601 --- src/com/android/settings/users/UserSettings.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java index 632dfe548ca..dbaaf371530 100644 --- a/src/com/android/settings/users/UserSettings.java +++ b/src/com/android/settings/users/UserSettings.java @@ -26,6 +26,7 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.SharedPreferences; import android.content.pm.UserInfo; +import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.drawable.BitmapDrawable; @@ -477,6 +478,7 @@ public class UserSettings extends SettingsPreferenceFragment } private void loadIconsAsync(List missingIcons) { + final Resources resources = getResources(); new AsyncTask, Void, Void>() { @Override protected void onPostExecute(Void result) { @@ -485,17 +487,16 @@ public class UserSettings extends SettingsPreferenceFragment @Override protected Void doInBackground(List... values) { - if (getActivity() == null) return null; for (int userId : values[0]) { Bitmap bitmap = mUserManager.getUserIcon(userId); - Drawable d = new BitmapDrawable(getResources(), bitmap); + Drawable d = new BitmapDrawable(resources, bitmap); mUserIcons.append(userId, d); } return null; } }.execute(missingIcons); - } + private void assignProfilePhoto(final UserInfo user) { if (!Utils.copyMeProfilePhoto(getActivity(), user)) { assignDefaultPhoto(user);