# SpatialActivityPanel

## Functions summary

|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `@https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable @https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/SubspaceComposable https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/SpatialActivityPanel.composable#SpatialActivityPanel(androidx.xr.compose.subspace.SpatialActivityPanelController,androidx.xr.compose.subspace.layout.SubspaceModifier,androidx.xr.compose.subspace.layout.SpatialShape)( controller: https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/SpatialActivityPanelController, modifier: https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/layout/SubspaceModifier, shape: https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/layout/SpatialShape )` Creates a `https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/SpatialActivityPanel.composable#SpatialActivityPanel(androidx.xr.compose.subspace.SpatialActivityPanelController,androidx.xr.compose.subspace.layout.SubspaceModifier,androidx.xr.compose.subspace.layout.SpatialShape)` that launches and displays an Activity within it. |

## Functions

### SpatialActivityPanel

Artifact: [androidx.xr.compose:compose](https://developer.android.com/jetpack/androidx/releases/xr-compose) [View Source](https://cs.android.com/search?q=file:androidx/xr/compose/subspace/SpatialActivityPanel.android.kt+function:SpatialActivityPanel)

```
@Composable
@SubspaceComposable
fun SpatialActivityPanel(
    controller: SpatialActivityPanelController,
    modifier: SubspaceModifier = SubspaceModifier,
    shape: SpatialShape = SpatialPanelDefaults.shape
): Unit
```

Creates a `https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/SpatialActivityPanel.composable#SpatialActivityPanel(androidx.xr.compose.subspace.SpatialActivityPanelController,androidx.xr.compose.subspace.layout.SubspaceModifier,androidx.xr.compose.subspace.layout.SpatialShape)` that launches and displays an Activity within it.

This `https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/SpatialActivityPanel.composable#SpatialActivityPanel(androidx.xr.compose.subspace.SpatialActivityPanelController,androidx.xr.compose.subspace.layout.SubspaceModifier,androidx.xr.compose.subspace.layout.SpatialShape)` can render any Activity that the application has permission to invoke as an embedded activity.

The panel size is determined solely by the layout constraints and the provided `https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/package-summary#SpatialActivityPanel(androidx.xr.compose.subspace.SpatialActivityPanelController,androidx.xr.compose.subspace.layout.SubspaceModifier,androidx.xr.compose.subspace.layout.SpatialShape)` it does not resize based on the activity content.

```kotlin
import androidx.compose.runtime.remember
import androidx.xr.compose.spatial.Subspace
import androidx.xr.compose.subspace.SpatialActivityPanel
import androidx.xr.compose.subspace.rememberSpatialActivityPanelController

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

```kotlin
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.remember
import androidx.compose.ui.platform.LocalContext
import androidx.xr.compose.spatial.Subspace
import androidx.xr.compose.subspace.SpatialActivityPanel
import androidx.xr.compose.subspace.rememberSpatialActivityPanelController

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

```kotlin
import androidx.compose.foundation.layout.Column
import androidx.compose.material3.Button
import androidx.compose.material3.Text
import androidx.compose.runtime.key
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.platform.LocalContext
import androidx.xr.compose.spatial.Subspace
import androidx.xr.compose.subspace.SpatialActivityPanel
import androidx.xr.compose.subspace.rememberSpatialActivityPanelController

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

| Parameters |
|---|---|
| `controller: https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/SpatialActivityPanelController` | The `https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/SpatialActivityPanelController` used to manage the Activities displayed within this panel. It provides a mechanism to queue and dispatch `https://developer.android.com/reference/android/content/Intent.html`s to the embedded Activity environment. |
| `modifier: https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/layout/SubspaceModifier = SubspaceModifier` | SubspaceModifiers to apply to the SpatialPanel. The layout size of the panel will dictate the viewport size allocated to the embedded Activity. |
| `shape: https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/layout/SpatialShape = SpatialPanelDefaults.shape` | The shape of this Spatial Panel. |