in car_app_library/showcase/common/src/main/java/androidx/car/app/sample/showcase/common/TaskRestrictionDemoScreen.java [54:146]
public Template onGetTemplate() {
// Last step must either be a PaneTemplate, MessageTemplate or NavigationTemplate.
if (mStep == MAX_STEPS_ALLOWED) {
OnClickListener onClickListener = () ->
getScreenManager()
.pushForResult(
new TaskRestrictionDemoScreen(
mStep + 1,
getCarContext()),
result ->
mIsBackOperation = true);
return new MessageTemplate.Builder(
"Task limit reached\nGoing forward will force stop the app")
.setHeaderAction(BACK)
.addAction(
new Action.Builder()
.setTitle("Try Anyway")
.setOnClickListener(onClickListener)
.build())
.build();
}
ItemList.Builder builder = new ItemList.Builder();
builder.addItem(
new Row.Builder()
.setTitle("Task step " + mStep + " of " + MAX_STEPS_ALLOWED)
.addText("Click to go forward")
.setOnClickListener(
() ->
getScreenManager()
.pushForResult(
new TaskRestrictionDemoScreen(
mStep + 1, getCarContext()),
result -> mIsBackOperation = true))
.build())
.addItem(
new Row.Builder()
.setTitle("Toggle test")
.addText("Stateful changes are allowed")
.setToggle(
new Toggle.Builder(
checked -> {
mToggleState = !mToggleState;
invalidate();
})
.setChecked(mToggleState)
.build())
.build())
.addItem(
new Row.Builder()
.setTitle("Image test")
.addText("Image changes are allowed")
.setImage(
new CarIcon.Builder(
IconCompat.createWithResource(
getCarContext(),
R.drawable.ic_fastfood_white_48dp))
.build(),
mImageType)
.setOnClickListener(
() -> {
mImageType =
mImageType == Row.IMAGE_TYPE_ICON
? Row.IMAGE_TYPE_LARGE
: Row.IMAGE_TYPE_ICON;
invalidate();
})
.build());
if (mIsBackOperation) {
builder.addItem(
new Row.Builder()
.setTitle("Additional Data")
.addText("Updates allows on back operations.")
.build());
}
return new ListTemplate.Builder()
.setSingleList(builder.build())
.setTitle("Task Restriction Demo")
.setHeaderAction(BACK)
.setActionStrip(
new ActionStrip.Builder()
.addAction(
new Action.Builder()
.setTitle("HOME")
.setOnClickListener(
() -> getScreenManager().popToRoot())
.build())
.build())
.build();
}