diff options
author | Svetoslav <svetoslavganov@google.com> | 2014-09-04 19:54:15 -0700 |
---|---|---|
committer | Svetoslav <svetoslavganov@google.com> | 2014-09-04 19:54:21 -0700 |
commit | 4a361df54b0c00dfe730b29b879abcd836a5d85a (patch) | |
tree | 93949bd6b973b5d1a4ac5cb6f1d497ccb9c39ce5 /src/com/android/settings/print | |
parent | 0535ed559eca51cce107309d05a3858ae48f5f20 (diff) | |
download | packages_apps_Settings-4a361df54b0c00dfe730b29b879abcd836a5d85a.zip packages_apps_Settings-4a361df54b0c00dfe730b29b879abcd836a5d85a.tar.gz packages_apps_Settings-4a361df54b0c00dfe730b29b879abcd836a5d85a.tar.bz2 |
Fix an occasional crash in print job state fragment in Settings.
There is a NPE in the print settings if the following occurs:
We open the print job state UI in settings for an ongoing print
job (now we have action bar buttons for cancel and restart);
now the print job gets completed and we update the UI and
since the print job is not longer present we nullify the current
job reference and finish the activity. But since activity
is not finished immediately there is an opportunity for the
user to click on the action bar options which results in NPE.
The fix is to not update the print job instance in the update
UI method if the job is not available, i.e. the update method
does not mutate state if the job is no longer present, as we
are finishing and performing an operation on a finished job will
have no effect.
bug:17387134
Change-Id: I501ed1e05b8b70584b3299a16e93ead5ab7f155f
Diffstat (limited to 'src/com/android/settings/print')
-rw-r--r-- | src/com/android/settings/print/PrintJobSettingsFragment.java | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/com/android/settings/print/PrintJobSettingsFragment.java b/src/com/android/settings/print/PrintJobSettingsFragment.java index cbe70ae..5af7f9d 100644 --- a/src/com/android/settings/print/PrintJobSettingsFragment.java +++ b/src/com/android/settings/print/PrintJobSettingsFragment.java @@ -153,18 +153,19 @@ public class PrintJobSettingsFragment extends SettingsPreferenceFragment { } private void updateUi() { - mPrintJob = mPrintManager.getPrintJob(mPrintJobId); + PrintJob printJob = mPrintManager.getPrintJob(mPrintJobId); - if (mPrintJob == null) { + if (printJob == null) { finish(); return; } - if (mPrintJob.isCancelled() || mPrintJob.isCompleted()) { + if (printJob.isCancelled() || printJob.isCompleted()) { finish(); return; } + mPrintJob = printJob; PrintJobInfo info = mPrintJob.getInfo(); switch (info.getState()) { |