diff --git a/README.md b/README.md index 009f181..8bc04df 100644 --- a/README.md +++ b/README.md @@ -76,19 +76,16 @@ Router.addRouteGenerator { path -> #### 4.3 ActivityOptions ```kotlin +findNavigator().path("/route/second").activityOptions(...).push() findNavigator().path("/route/second").cast().activityOptions(...).push() ``` #### 4.4 单Activity的Fragment之间导航暂未支持, 可自行继承FragmentTargetNavigator后通过NavigatorEngine实现 -``` - allprojects { - repositories { - maven { url 'https://jitpack.io' } - } - } - - dependencies { - implementation 'com.github.qstumn:Router:$release' - } + +### 5. 依赖 +```groovy + maven { url 'https://jitpack.io' } + + implementation 'com.github.qstumn:Router:$release' ``` \ No newline at end of file diff --git a/router/src/main/java/q/rorbin/router/common.kt b/router/src/main/java/q/rorbin/router/common.kt index bbbae00..ff490d0 100644 --- a/router/src/main/java/q/rorbin/router/common.kt +++ b/router/src/main/java/q/rorbin/router/common.kt @@ -26,7 +26,7 @@ data class RouteTransition(val enterAnim: Int, val exitAnim: Int) class RouteErrorException(message: String? = null) : Exception(message) -internal const val UNIQUE_DATA_KEY = "navigator_transmit_data_auto_key" +const val UNIQUE_DATA_KEY = "navigator_transmit_data_auto_key" data class NavigatorResult(val requestCode: Int, val intent: Intent) { diff --git a/router/src/main/java/q/rorbin/router/ktx.kt b/router/src/main/java/q/rorbin/router/ktx.kt index aaf20a1..a82a985 100644 --- a/router/src/main/java/q/rorbin/router/ktx.kt +++ b/router/src/main/java/q/rorbin/router/ktx.kt @@ -38,6 +38,8 @@ internal fun Any.putToBundle(bundleKey: String = UNIQUE_DATA_KEY, bundle: Bundle } value.putToBundle(key, newBundle) } + } else { + throw RouteErrorException("cannot pass param with key $bundleKey, unsupport this data type") } return newBundle } @@ -109,8 +111,9 @@ fun Fragment.registerForNavigatorResult(resultCallback: ResultCallback): return register } -private fun registerForNavigatorResult(register: NavigatorResultRegister, fragmentManager: () -> FragmentManager, - lifecycle: Lifecycle +private fun registerForNavigatorResult( + register: NavigatorResultRegister, fragmentManager: () -> FragmentManager, + lifecycle: Lifecycle ) { val bindRequest = { val fragment = ResultBlankFragment.obtainSelfByFragmentManager(fragmentManager()) diff --git a/router/src/main/java/q/rorbin/router/navigator/base.kt b/router/src/main/java/q/rorbin/router/navigator/base.kt index 032e931..0af35ac 100644 --- a/router/src/main/java/q/rorbin/router/navigator/base.kt +++ b/router/src/main/java/q/rorbin/router/navigator/base.kt @@ -1,6 +1,8 @@ package q.rorbin.router.navigator +import android.content.Intent import android.os.Bundle +import androidx.core.app.ActivityOptionsCompat import q.rorbin.router.NavigatorResultRegister import q.rorbin.router.ResultCallback import q.rorbin.router.putToBundle @@ -62,4 +64,14 @@ abstract class Navigator internal constructor() { */ abstract fun pop(resultData: Any?) +} + +fun Navigator.activityOptions(options: ActivityOptionsCompat): Navigator { + (this as? ActivityTargetNavigator)?.activityOptions(options) + return this +} + +fun Navigator.intent(intent: Intent): Navigator { + (this as? ActivityTargetNavigator)?.intent(intent) + return this } \ No newline at end of file