Composable Function

SpatialActivityPanel

Creates a SpatialActivityPanel that launches and displays an Activity within it.

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)
                    )
                }
            }
        }
    }
}

Content updated: