Initialization - Fragment Standard Experience
Embed the SDK in your own Activity as a Fragment, keeping your Activity lifecycle uninterrupted.
Fragment Standard Experience Initialization
The PayMitto SDK can run inside your own Activity as a Fragment, instead of launching a new Activity. This is the recommended approach when you need your Activity to remain in the RESUMED state while the SDK is running, for example when you have coroutines, LiveData observers, or custom modals tied to your Activity's lifecycle.
Fragment initialization is a two step process. First you configure the SDK, then you create the Fragment:
- Call
configureFragmentwith your PayMittoConfiguration object. This prepares the SDK internals and your authentication provider. It returns right away and does not start authentication. - Call
createFragmentto get the Fragment, then add it to yourFragmentManager. Authentication runs inside the Fragment, which shows the SDK loading view while it signs in and then presents the flow.
PayMitto.configureFragment(
activity = this@MainActivity,
payMittoConfiguration = sdkConfiguration
)
val fragment = PayMitto.createFragment()
supportFragmentManager.beginTransaction()
.replace(R.id.container, fragment)
.addToBackStack(null)
.commit()
CallconfigureFragmentfirst
createFragmentneeds the SDK to be configured. Always callconfigureFragmentbeforecreateFragment, otherwise the SDK throws anIllegalStateException.
Hosting the Fragment with navigation
Because createFragment returns the Fragment right away, you can also let the navigation system build it for you. Call configureFragment before navigation reaches the SDK destination, usually in your Activity's onCreate.
With the Navigation Component (XML nav graph), declare the SDK Fragment as a destination:
<fragment
android:id="@+id/paymitto_sdk"
android:name="com.paymitto.android.sdk.internal.PayMittoFragment" />With Compose Navigation, host it through AndroidFragment from androidx.fragment:fragment-compose:
PayMitto.configureFragment(
activity = this@MainActivity,
payMittoConfiguration = sdkConfiguration
)
setContent {
NavHost(navController, startDestination = "sdk") {
composable("sdk") {
AndroidFragment<PayMittoFragment>()
}
}
}
Edge-to-edgeWhen using the Fragment API, your Activity is responsible for calling
enableEdgeToEdge()if you want the SDK visuals to extend behind the system bars.
LocaleIn Fragment mode, display strings follow your host Activity's locale. The
localizationparameter inPayMittoConfigurationstill controls the API request language (Accept-Languageheader) and date formatting.
After process deathThe SDK internals do not survive the process being killed. When the system restores your Activity, call
configureFragmentagain before the Fragment is recreated, or detect that the SDK is not configured and route the user to a safe screen. This matters most with navigation graph hosting, where the navigation system recreates the Fragment on its own.
If you are using Jetpack ComposeDon't create the configuration object or call
PayMitto.configureFragmentandPayMitto.createFragmentin the compose scope, since recompositions lead to runtime errors.Create the configuration object inside a
rememberclause or in an AndroidX ViewModel, and callconfigureFragmentbeforesetContent.
Updated 13 days ago

