Android
The circuitx-android
artifact contains Android-specific extensions for Circuit.
dependencies {
implementation("com.slack.circuit:circuitx-android:<version>")
}
Navigation¶
It can be important for Circuit to be able to navigate to Android targets, such as other activities
or custom tabs. To support this, decorate your existing Navigator
instance
with rememberAndroidScreenAwareNavigator()
.
class MainActivity : Activity {
override fun onCreate(savedInstanceState: Bundle?) {
setContent {
val backStack = rememberSaveableBackStack(root = HomeScreen)
val navigator = rememberAndroidScreenAwareNavigator(
rememberCircuitNavigator(backstack), // Decorated navigator
this@MainActivity
)
CircuitCompositionLocals(circuit) {
NavigableCircuitContent(navigator, backstack)
}
}
}
}
rememberAndroidScreenAwareNavigator()
has two overloads - one that accepts a Context
and one
that accepts an AndroidScreenStarter
. The former is just a shorthand for the latter that only
supports IntentScreen
. You can also implement your own starter that supports other screen types.
AndroidScreen
is the base Screen
type that this navigator and AndroidScreenStarter
interact
with. There is a built-in IntentScreen
implementation that wraps an Intent
and an
options Bundle
to pass to startActivity()
. Custom AndroidScreens
can be implemented separately
and route through here, but you should be sure to implement your own AndroidScreenStarter
to
handle them accordingly.