Fixes setting a toggle as a primary action
Test: manual - try out the custom toggle in SliceBrowser
Change-Id: Icb9945b6a1785687fe123e9dd857cc03cf522ce1
diff --git a/samples/SupportSliceDemos/src/main/java/com/example/androidx/slice/demos/SampleSliceProvider.java b/samples/SupportSliceDemos/src/main/java/com/example/androidx/slice/demos/SampleSliceProvider.java
index 16171b1..de764a1 100644
--- a/samples/SupportSliceDemos/src/main/java/com/example/androidx/slice/demos/SampleSliceProvider.java
+++ b/samples/SupportSliceDemos/src/main/java/com/example/androidx/slice/demos/SampleSliceProvider.java
@@ -315,7 +315,8 @@
.addRow(b -> b
.setTitle("Custom toggle")
.setSubtitle("It can support two states")
- .addEndItem(new SliceAction(getBroadcastIntent(ACTION_TOAST, "star toggled"),
+ .setPrimaryAction(new SliceAction(getBroadcastIntent(ACTION_TOAST,
+ "star toggled"),
Icon.createWithResource(getContext(), R.drawable.toggle_star),
"Toggle star", true /* isChecked */)))
.build();
diff --git a/slices/view/src/main/java/androidx/app/slice/widget/RowView.java b/slices/view/src/main/java/androidx/app/slice/widget/RowView.java
index fce819a..5b3e74c 100644
--- a/slices/view/src/main/java/androidx/app/slice/widget/RowView.java
+++ b/slices/view/src/main/java/androidx/app/slice/widget/RowView.java
@@ -197,6 +197,12 @@
SliceItem primaryAction = mRowContent.getPrimaryAction();
if (primaryAction != null) {
mRowAction = new ActionContent(primaryAction);
+ if (mRowAction.isToggle()) {
+ // If primary action is a toggle, add it and we're done
+ addToggle(mRowAction, mTintColor, mEndContainer);
+ setViewClickable(this, true);
+ return;
+ }
}
List<SliceItem> endItems = mRowContent.getEndItems();
@@ -432,7 +438,7 @@
@Override
public void onClick(View view) {
- if (mRowAction != null && mRowAction.getActionItem() != null) {
+ if (mRowAction != null && mRowAction.getActionItem() != null && !mRowAction.isToggle()) {
// Check for a row action
try {
mRowAction.getActionItem().getAction().send();