From eb01628ba897c116e434970309a4d5aff3fd03db Mon Sep 17 00:00:00 2001 From: "Philip P. Moltmann" Date: Thu, 21 Apr 2016 15:15:37 -0700 Subject: [PATCH] Update print jobs appropriately in the print settings. - Always use a fresh print job as once the print job goes away it cannot be read. Before we were stuck with the last state which might not been the last state - make loaders relative to fragment to avoid loader id duplications with other ids of the activity. Fixes: 28315242 Change-Id: I57eeb64b44b5d77b2092c22b175407131f7baf97 --- .../print/PrintJobSettingsFragment.java | 30 +++++++++---------- .../print/PrintServiceSettingsFragment.java | 2 +- .../settings/print/PrintSettingsFragment.java | 8 ++--- 3 files changed, 19 insertions(+), 21 deletions(-) diff --git a/src/com/android/settings/print/PrintJobSettingsFragment.java b/src/com/android/settings/print/PrintJobSettingsFragment.java index 3cd18e1168a..08bbd9781aa 100644 --- a/src/com/android/settings/print/PrintJobSettingsFragment.java +++ b/src/com/android/settings/print/PrintJobSettingsFragment.java @@ -63,7 +63,6 @@ public class PrintJobSettingsFragment extends SettingsPreferenceFragment { private Preference mMessagePreference; private PrintJobId mPrintJobId; - private PrintJob mPrintJob; @Override protected int getMetricsCategory() { @@ -134,17 +133,21 @@ public class PrintJobSettingsFragment extends SettingsPreferenceFragment { @Override public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case MENU_ITEM_ID_CANCEL: { - getPrintJob().cancel(); - finish(); - return true; - } + PrintJob printJob = getPrintJob(); - case MENU_ITEM_ID_RESTART: { - getPrintJob().restart(); - finish(); - return true; + if (printJob != null) { + switch (item.getItemId()) { + case MENU_ITEM_ID_CANCEL: { + printJob.cancel(); + finish(); + return true; + } + + case MENU_ITEM_ID_RESTART: { + printJob.restart(); + finish(); + return true; + } } } @@ -161,10 +164,7 @@ public class PrintJobSettingsFragment extends SettingsPreferenceFragment { } private PrintJob getPrintJob() { - if (mPrintJob == null) { - mPrintJob = mPrintManager.getPrintJob(mPrintJobId); - } - return mPrintJob; + return mPrintManager.getPrintJob(mPrintJobId); } private void updateUi() { diff --git a/src/com/android/settings/print/PrintServiceSettingsFragment.java b/src/com/android/settings/print/PrintServiceSettingsFragment.java index e54241c3f42..42d8a8d3465 100644 --- a/src/com/android/settings/print/PrintServiceSettingsFragment.java +++ b/src/com/android/settings/print/PrintServiceSettingsFragment.java @@ -606,7 +606,7 @@ public class PrintServiceSettingsFragment extends SettingsPreferenceFragment @Override public Loader> onCreateLoader(int id, Bundle args) { if (id == LOADER_ID_PRINTERS_LOADER) { - return new PrintersLoader(getActivity()); + return new PrintersLoader(getContext()); } return null; } diff --git a/src/com/android/settings/print/PrintSettingsFragment.java b/src/com/android/settings/print/PrintSettingsFragment.java index fb80f293295..c1fbfbb764f 100644 --- a/src/com/android/settings/print/PrintSettingsFragment.java +++ b/src/com/android/settings/print/PrintSettingsFragment.java @@ -115,12 +115,10 @@ public class PrintSettingsFragment extends ProfileSettingsPreferenceFragment getPreferenceScreen().removePreference(mActivePrintJobsCategory); mPrintJobsController = new PrintJobsController(); - getActivity().getLoaderManager().initLoader(LOADER_ID_PRINT_JOBS_LOADER, null, - mPrintJobsController); + getLoaderManager().initLoader(LOADER_ID_PRINT_JOBS_LOADER, null, mPrintJobsController); mPrintServicesController = new PrintServicesController(); - getActivity().getLoaderManager().initLoader(LOADER_ID_PRINT_SERVICES, null, - mPrintServicesController); + getLoaderManager().initLoader(LOADER_ID_PRINT_SERVICES, null, mPrintServicesController); } @Override @@ -294,7 +292,7 @@ public class PrintSettingsFragment extends ProfileSettingsPreferenceFragment @Override public Loader> onCreateLoader(int id, Bundle args) { if (id == LOADER_ID_PRINT_JOBS_LOADER) { - return new PrintJobsLoader(getActivity()); + return new PrintJobsLoader(getContext()); } return null; }