diff --git a/library/src/main/kotlin/com/github/terrakok/cicerone/androidx/AppScreen.kt b/library/src/main/kotlin/com/github/terrakok/cicerone/androidx/AppScreen.kt
index 6241db8..584fbb4 100644
--- a/library/src/main/kotlin/com/github/terrakok/cicerone/androidx/AppScreen.kt
+++ b/library/src/main/kotlin/com/github/terrakok/cicerone/androidx/AppScreen.kt
@@ -6,10 +6,11 @@ import android.os.Bundle
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentFactory
import com.github.terrakok.cicerone.Screen
+import java.io.Serializable
-sealed class AppScreen : Screen
+sealed class AppScreen : Screen, Serializable
-fun interface Creator {
+fun interface Creator: Serializable {
fun create(argument: A): R
}
@@ -28,4 +29,4 @@ open class ActivityScreen @JvmOverloads constructor(
override val screenKey: String get() = key ?: super.screenKey
open val startActivityOptions: Bundle? = null
fun createIntent(context: Context) = intentCreator.create(context)
-}
\ No newline at end of file
+}
diff --git a/sample/src/main/java/com/github/terrakok/cicerone/sample/Screens.kt b/sample/src/main/java/com/github/terrakok/cicerone/sample/Screens.kt
index e6e79e9..83b4ec1 100644
--- a/sample/src/main/java/com/github/terrakok/cicerone/sample/Screens.kt
+++ b/sample/src/main/java/com/github/terrakok/cicerone/sample/Screens.kt
@@ -28,8 +28,11 @@ object Screens {
Intent(it, StartActivity::class.java)
}
- fun Main() = ActivityScreen {
- Intent(it, MainActivity::class.java)
+ // Consider to use val and upper-case naming
+ val MAIN = ActivityScreen {
+ Intent(it, MainActivity::class.java).apply {
+ putExtra("sampleScreen", Sample(1))
+ }
}
fun BottomNavigation() = ActivityScreen {
@@ -59,4 +62,4 @@ object Screens {
fun SelectPhoto(resultKey: String) = FragmentScreen {
SelectPhotoFragment.getNewInstance(resultKey)
}
-}
\ No newline at end of file
+}
diff --git a/sample/src/main/java/com/github/terrakok/cicerone/sample/mvp/start/StartActivityPresenter.kt b/sample/src/main/java/com/github/terrakok/cicerone/sample/mvp/start/StartActivityPresenter.kt
index 88bdb35..49f99bb 100644
--- a/sample/src/main/java/com/github/terrakok/cicerone/sample/mvp/start/StartActivityPresenter.kt
+++ b/sample/src/main/java/com/github/terrakok/cicerone/sample/mvp/start/StartActivityPresenter.kt
@@ -1,8 +1,8 @@
package com.github.terrakok.cicerone.sample.mvp.start
import com.github.terrakok.cicerone.Router
+import com.github.terrakok.cicerone.sample.Screens
import com.github.terrakok.cicerone.sample.Screens.BottomNavigation
-import com.github.terrakok.cicerone.sample.Screens.Main
import com.github.terrakok.cicerone.sample.Screens.Profile
import moxy.MvpPresenter
@@ -12,7 +12,7 @@ import moxy.MvpPresenter
class StartActivityPresenter(private val router: Router) : MvpPresenter() {
fun onOrdinaryPressed() {
- router.navigateTo(Main())
+ router.navigateTo(Screens.MAIN)
}
fun onMultiPressed() {
@@ -27,4 +27,4 @@ class StartActivityPresenter(private val router: Router) : MvpPresenter) {
@@ -48,7 +53,9 @@ class MainActivity : MvpAppCompatActivity(), ChainHolder {
screensSchemeTV = findViewById(R.id.screens_scheme) as TextView
if (savedInstanceState == null) {
- navigator.applyCommands(arrayOf(Replace(Sample(1))))
+ // Just for sample of deserialization
+ val sampleScreen = intent.getSerializableExtra("sampleScreen") as FragmentScreen
+ router.replaceScreen(sampleScreen)
} else {
printScreensScheme()
}
@@ -92,4 +99,4 @@ class MainActivity : MvpAppCompatActivity(), ChainHolder {
}
screensSchemeTV.text = "Chain: $keys"
}
-}
\ No newline at end of file
+}