SpatialActivityPanelSample
@Sampled
@Composable
public fun SpatialActivityPanelSample(intent: Intent) {
// Because the controller is remembered, passing a different intent parameter
// on recomposition will not update the controller or launch a new activity.
val controller = rememberSpatialActivityPanelController(intent)
Subspace { SpatialActivityPanel(controller = controller) }
}
SpatialActivityPanelLaunchedEffectSample
@Sampled
@Composable
public fun SpatialActivityPanelLaunchedEffectSample(pendingItemId: String?) {
val context = LocalContext.current
val controller =
rememberSpatialActivityPanelController(Intent(context, DashboardActivity::class.java))
Subspace {
SpatialActivityPanel(controller = controller)
LaunchedEffect(pendingItemId) {
val itemId = pendingItemId ?: return@LaunchedEffect
val detailIntent =
Intent(context, DetailActivity::class.java).apply { putExtra("ITEM_ID", itemId) }
controller.startActivity(detailIntent)
}
}
}
SpatialActivityPanelRecreateSample
@Sampled
@Composable
public fun SpatialActivityPanelRecreateSample() {
val context = LocalContext.current
var selectedEmailId by remember { mutableStateOf<String?>(null) }
Column {
Button(onClick = { selectedEmailId = "email_1" }) { Text("Open Email 1") }
Button(onClick = { selectedEmailId = "email_2" }) { Text("Open Email 2") }
if (selectedEmailId != null) {
Subspace {
// Using Compose key to force recreation of the controller and
// the panel whenever the selected email changes. This tears down
// the old activity stack and starts a new one for the new email.
key(selectedEmailId) {
val intent =
Intent(context, NewEmailActivity::class.java).apply {
putExtra("EMAIL_ID", selectedEmailId)
}
SpatialActivityPanel(
controller = rememberSpatialActivityPanelController(intent)
)
}
}
}
}
}