From 8ba88c5ebfdb18ae0e0414201ac04e73a3d10ead Mon Sep 17 00:00:00 2001 From: Andy Mast Date: Thu, 22 May 2014 17:06:48 -0700 Subject: Fix NP when activity detaches from fragment Change-Id: I9cffdd137683b5a9fa45e21a22e859919a23cd8a --- .../theme/chooser/ChooserBrowseFragment.java | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/org/cyanogenmod/theme/chooser/ChooserBrowseFragment.java b/src/org/cyanogenmod/theme/chooser/ChooserBrowseFragment.java index 3f192de..897b489 100644 --- a/src/org/cyanogenmod/theme/chooser/ChooserBrowseFragment.java +++ b/src/org/cyanogenmod/theme/chooser/ChooserBrowseFragment.java @@ -19,6 +19,7 @@ import java.util.ArrayList; import java.util.List; import android.content.res.CustomTheme; + import org.cyanogenmod.theme.chooser.WallpaperAndIconPreviewFragment.IconInfo; import org.cyanogenmod.theme.util.BootAnimationHelper; import org.cyanogenmod.theme.util.IconPreviewHelper; @@ -45,6 +46,7 @@ import android.support.v4.app.LoaderManager; import android.support.v4.content.CursorLoader; import android.support.v4.content.Loader; import android.support.v4.widget.CursorAdapter; +import android.util.Log; import android.util.TypedValue; import android.view.Display; import android.view.LayoutInflater; @@ -60,7 +62,9 @@ import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView; -public class ChooserBrowseFragment extends Fragment implements LoaderManager.LoaderCallbacks { +public class ChooserBrowseFragment extends Fragment + implements LoaderManager.LoaderCallbacks { + public static final String TAG = ChooserBrowseFragment.class.getCanonicalName(); public static final String DEFAULT = CustomTheme.HOLO_DEFAULT; public ListView mListView; @@ -342,9 +346,15 @@ public class ChooserBrowseFragment extends Fragment implements LoaderManager.Loa @Override protected Bitmap doInBackground(Object... params) { Bitmap bitmap = null; + Context context = getActivity(); + if (context == null) { + Log.d(TAG, "Activity was detached, skipping loadImage"); + return null; + } + if (!isLegacyTheme) { if (DEFAULT.equals(pkgName)) { - Resources res = getActivity().getResources(); + Resources res = context.getResources(); AssetManager assets = new AssetManager(); assets.addAssetPath(WallpaperAndIconPreviewFragment.FRAMEWORK_RES); Resources frameworkRes = new Resources(assets, res.getDisplayMetrics(), @@ -354,9 +364,9 @@ public class ChooserBrowseFragment extends Fragment implements LoaderManager.Loa mMaxImageSize.x, mMaxImageSize.y); } else { if (URLUtil.isAssetUrl(path)) { - Context ctx = getActivity(); + Context ctx = context; try { - ctx = getActivity().createPackageContext(pkgName, 0); + ctx = context.createPackageContext(pkgName, 0); } catch (PackageManager.NameNotFoundException e) { } @@ -367,9 +377,9 @@ public class ChooserBrowseFragment extends Fragment implements LoaderManager.Loa } } else { try { - PackageManager pm = getActivity().getPackageManager(); + PackageManager pm = context.getPackageManager(); PackageInfo pi = pm.getPackageInfo(path, 0); - final Context themeContext = getActivity().createPackageContext(path, + final Context themeContext = context.createPackageContext(path, Context.CONTEXT_IGNORE_SECURITY); final Resources res = themeContext.getResources(); final int resId = showWallpaper ? pi.legacyThemeInfos[0].wallpaperResourceId : -- cgit v1.1