# rememberSpatialActivityPanelController

## Functions summary

|---|---|
| `https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/SpatialActivityPanelController` | `@https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/rememberSpatialActivityPanelController.composable#rememberSpatialActivityPanelController(android.content.Intent)(initialIntent: https://developer.android.com/reference/android/content/Intent.html)` Creates and remembers a `https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/SpatialActivityPanelController` across recompositions. |

## Functions

### rememberSpatialActivityPanelController

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:rememberSpatialActivityPanelController)

```
@Composable
fun rememberSpatialActivityPanelController(initialIntent: Intent): SpatialActivityPanelController
```

Creates and remembers a `https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/SpatialActivityPanelController` across recompositions.

The provided `https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/package-summary#rememberSpatialActivityPanelController(android.content.Intent)` is only queued when the controller is initially created. Subsequent recompositions with a different intent will be ignored. To add new intents dynamically after creation, use `https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/SpatialActivityPanelController#startActivity(android.content.Intent)`. To replace the panel and its task stack with a new intent entirely, key the composition on the intent (e.g., using `key(intent)`).

```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.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 |
|---|---|
| `initialIntent: https://developer.android.com/reference/android/content/Intent.html` | The initial `https://developer.android.com/reference/android/content/Intent.html` to queue for execution inside the activity panel. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/SpatialActivityPanelController` | A remembered instance of `https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/SpatialActivityPanelController`. |