OSDN Git Service

Update print jobs appropriately in the print settings.
authorPhilip P. Moltmann <moltmann@google.com>
Thu, 21 Apr 2016 22:15:37 +0000 (15:15 -0700)
committerPhilip P. Moltmann <moltmann@google.com>
Thu, 21 Apr 2016 22:16:05 +0000 (15:16 -0700)
- 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

src/com/android/settings/print/PrintJobSettingsFragment.java
src/com/android/settings/print/PrintServiceSettingsFragment.java
src/com/android/settings/print/PrintSettingsFragment.java

index 3cd18e1..08bbd97 100644 (file)
@@ -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();
+
+        if (printJob != null) {
+            switch (item.getItemId()) {
+                case MENU_ITEM_ID_CANCEL: {
+                    printJob.cancel();
+                    finish();
+                    return true;
+                }
 
-            case MENU_ITEM_ID_RESTART: {
-                getPrintJob().restart();
-                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() {
index e54241c..42d8a8d 100644 (file)
@@ -606,7 +606,7 @@ public class PrintServiceSettingsFragment extends SettingsPreferenceFragment
         @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;
         }
index fb80f29..c1fbfbb 100644 (file)
@@ -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<List<PrintJobInfo>> onCreateLoader(int id, Bundle args) {
             if (id == LOADER_ID_PRINT_JOBS_LOADER) {
-                return new PrintJobsLoader(getActivity());
+                return new PrintJobsLoader(getContext());
             }
             return null;
         }