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 +}