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;
         }