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
diff --git a/src/com/android/settings/print/PrintJobSettingsFragment.java b/src/com/android/settings/print/PrintJobSettingsFragment.java
index 3cd18e1..08bbd97 100644
--- a/src/com/android/settings/print/PrintJobSettingsFragment.java
+++ b/src/com/android/settings/print/PrintJobSettingsFragment.java
@@ -63,7 +63,6 @@
private Preference mMessagePreference;
private PrintJobId mPrintJobId;
- private PrintJob mPrintJob;
@Override
protected int getMetricsCategory() {
@@ -134,17 +133,21 @@
@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 @@
}
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 e54241c..42d8a8d 100644
--- a/src/com/android/settings/print/PrintServiceSettingsFragment.java
+++ b/src/com/android/settings/print/PrintServiceSettingsFragment.java
@@ -606,7 +606,7 @@
@Override
public Loader<List<PrinterInfo>> 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 fb80f2932..c1fbfbb 100644
--- a/src/com/android/settings/print/PrintSettingsFragment.java
+++ b/src/com/android/settings/print/PrintSettingsFragment.java
@@ -115,12 +115,10 @@
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 @@
@Override
public Loader<List<PrintJobInfo>> onCreateLoader(int id, Bundle args) {
if (id == LOADER_ID_PRINT_JOBS_LOADER) {
- return new PrintJobsLoader(getActivity());
+ return new PrintJobsLoader(getContext());
}
return null;
}