From 89a23e510111735e70deab0a6629acc99bf87be0 Mon Sep 17 00:00:00 2001 From: Michael W Date: Fri, 28 Oct 2016 13:05:22 +0200 Subject: ThemeChooser: Fix possible IllegalArgumentException onResume will always register the listener, no matter if it's already been registered. Add a variable to track, if the listener has been registered already. Change-Id: I294c5ab1d8dd2b12ad744bc87127a38939c4e30e Reference: BugDumps 20161021-27 L#67 --- src/org/cyanogenmod/theme/chooser2/ThemeFragment.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/org/cyanogenmod/theme/chooser2/ThemeFragment.java b/src/org/cyanogenmod/theme/chooser2/ThemeFragment.java index e4dd0fc..2fe995c 100644 --- a/src/org/cyanogenmod/theme/chooser2/ThemeFragment.java +++ b/src/org/cyanogenmod/theme/chooser2/ThemeFragment.java @@ -336,6 +336,8 @@ public class ThemeFragment extends Fragment implements LoaderManager.LoaderCallb protected boolean mShowLockScreenSelectorAfterContentLoaded; + private boolean mListenerRegistered; + protected enum CustomizeResetAction { Customize, Reset, @@ -552,7 +554,10 @@ public class ThemeFragment extends Fragment implements LoaderManager.LoaderCallb ThemeManager tm = getThemeManager(); if (tm != null) { if (isThemeProcessing()) { - tm.registerProcessingListener(this); + if (!mListenerRegistered) { + tm.registerProcessingListener(this); + mListenerRegistered = true; + } mProcessingThemeLayout.setVisibility(View.VISIBLE); mProcessingResources = true; } else { @@ -568,7 +573,10 @@ public class ThemeFragment extends Fragment implements LoaderManager.LoaderCallb ThemeManager tm = getThemeManager(); if (tm != null) { tm.removeClient(this); - tm.unregisterProcessingListener(this); + if (mListenerRegistered) { + tm.unregisterProcessingListener(this); + mListenerRegistered = false; + } } } @@ -668,8 +676,9 @@ public class ThemeFragment extends Fragment implements LoaderManager.LoaderCallb public void onFinishedProcessing(String pkgName) { if (pkgName.equals(mPkgName) || pkgName.equals(mBaseThemePkgName)) { ThemeManager tm = getThemeManager(); - if (tm != null) { + if (tm != null && mListenerRegistered) { tm.unregisterProcessingListener(this); + mListenerRegistered = false; } } } -- cgit v1.1