From 4a361df54b0c00dfe730b29b879abcd836a5d85a Mon Sep 17 00:00:00 2001 From: Svetoslav Date: Thu, 4 Sep 2014 19:54:15 -0700 Subject: 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 --- src/com/android/settings/print/PrintJobSettingsFragment.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/com/android/settings/print/PrintJobSettingsFragment.java b/src/com/android/settings/print/PrintJobSettingsFragment.java index cbe70ae6f..5af7f9dda 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()) { -- cgit v1.2.3