Fix settings crash in print job screen.
The code was looking up the print job from the print manager based on the lifecycle event of the hosting fragment. There was a case missing and the print job not initialized on rotation. This change looks up the job lazily making the code more robust. bug:17471952 Change-Id: I00075e161f69ca711bac6857f5ec00c20b5b17a0
This commit is contained in:
@@ -112,13 +112,13 @@ public class PrintJobSettingsFragment extends SettingsPreferenceFragment {
|
|||||||
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
|
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
|
||||||
super.onCreateOptionsMenu(menu, inflater);
|
super.onCreateOptionsMenu(menu, inflater);
|
||||||
|
|
||||||
if (!mPrintJob.getInfo().isCancelling()) {
|
if (!getPrintJob().getInfo().isCancelling()) {
|
||||||
MenuItem cancel = menu.add(0, MENU_ITEM_ID_CANCEL, Menu.NONE,
|
MenuItem cancel = menu.add(0, MENU_ITEM_ID_CANCEL, Menu.NONE,
|
||||||
getString(R.string.print_cancel));
|
getString(R.string.print_cancel));
|
||||||
cancel.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
|
cancel.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mPrintJob.isFailed()) {
|
if (getPrintJob().isFailed()) {
|
||||||
MenuItem restart = menu.add(0, MENU_ITEM_ID_RESTART, Menu.NONE,
|
MenuItem restart = menu.add(0, MENU_ITEM_ID_RESTART, Menu.NONE,
|
||||||
getString(R.string.print_restart));
|
getString(R.string.print_restart));
|
||||||
restart.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
|
restart.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
|
||||||
@@ -129,13 +129,13 @@ public class PrintJobSettingsFragment extends SettingsPreferenceFragment {
|
|||||||
public boolean onOptionsItemSelected(MenuItem item) {
|
public boolean onOptionsItemSelected(MenuItem item) {
|
||||||
switch (item.getItemId()) {
|
switch (item.getItemId()) {
|
||||||
case MENU_ITEM_ID_CANCEL: {
|
case MENU_ITEM_ID_CANCEL: {
|
||||||
mPrintJob.cancel();
|
getPrintJob().cancel();
|
||||||
finish();
|
finish();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
case MENU_ITEM_ID_RESTART: {
|
case MENU_ITEM_ID_RESTART: {
|
||||||
mPrintJob.restart();
|
getPrintJob().restart();
|
||||||
finish();
|
finish();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -152,8 +152,15 @@ public class PrintJobSettingsFragment extends SettingsPreferenceFragment {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private PrintJob getPrintJob() {
|
||||||
|
if (mPrintJob == null) {
|
||||||
|
mPrintJob = mPrintManager.getPrintJob(mPrintJobId);
|
||||||
|
}
|
||||||
|
return mPrintJob;
|
||||||
|
}
|
||||||
|
|
||||||
private void updateUi() {
|
private void updateUi() {
|
||||||
PrintJob printJob = mPrintManager.getPrintJob(mPrintJobId);
|
PrintJob printJob = getPrintJob();
|
||||||
|
|
||||||
if (printJob == null) {
|
if (printJob == null) {
|
||||||
finish();
|
finish();
|
||||||
@@ -165,13 +172,12 @@ public class PrintJobSettingsFragment extends SettingsPreferenceFragment {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
mPrintJob = printJob;
|
PrintJobInfo info = printJob.getInfo();
|
||||||
PrintJobInfo info = mPrintJob.getInfo();
|
|
||||||
|
|
||||||
switch (info.getState()) {
|
switch (info.getState()) {
|
||||||
case PrintJobInfo.STATE_QUEUED:
|
case PrintJobInfo.STATE_QUEUED:
|
||||||
case PrintJobInfo.STATE_STARTED: {
|
case PrintJobInfo.STATE_STARTED: {
|
||||||
if (!mPrintJob.getInfo().isCancelling()) {
|
if (!printJob.getInfo().isCancelling()) {
|
||||||
mPrintJobPreference.setTitle(getString(
|
mPrintJobPreference.setTitle(getString(
|
||||||
R.string.print_printing_state_title_template, info.getLabel()));
|
R.string.print_printing_state_title_template, info.getLabel()));
|
||||||
} else {
|
} else {
|
||||||
@@ -186,7 +192,7 @@ public class PrintJobSettingsFragment extends SettingsPreferenceFragment {
|
|||||||
} break;
|
} break;
|
||||||
|
|
||||||
case PrintJobInfo.STATE_BLOCKED: {
|
case PrintJobInfo.STATE_BLOCKED: {
|
||||||
if (!mPrintJob.getInfo().isCancelling()) {
|
if (!printJob.getInfo().isCancelling()) {
|
||||||
mPrintJobPreference.setTitle(getString(
|
mPrintJobPreference.setTitle(getString(
|
||||||
R.string.print_blocked_state_title_template, info.getLabel()));
|
R.string.print_blocked_state_title_template, info.getLabel()));
|
||||||
} else {
|
} else {
|
||||||
|
Reference in New Issue
Block a user