Skip to content
This repository has been archived by the owner on Jul 13, 2020. It is now read-only.

Allow nullable values in createIntent and startActivity #465

Merged
merged 2 commits into from
Nov 9, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions anko/library/robolectricTests/src/test/java/CreateIntentTest.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import android.app.Activity
import org.jetbrains.anko.internals.AnkoInternals
import org.junit.Test
import org.junit.runner.RunWith
import org.robolectric.RobolectricTestRunner
import org.robolectric.RuntimeEnvironment
import org.robolectric.annotation.Config
import test.BuildConfig

@RunWith(RobolectricTestRunner::class)
@Config(constants = BuildConfig::class)
class CreateIntentTest {
@Test
fun test() {
val intent1 = AnkoInternals.createIntent(RuntimeEnvironment.application, Activity::class.java, arrayOf())
assert(intent1.extras == null)

val intent2 = AnkoInternals.createIntent(RuntimeEnvironment.application, Activity::class.java, arrayOf(
"one" to 1,
"abc" to "ABC",
"null" to null
))

assert(intent2.extras.size() == 3)
assert(intent2.extras.get("one") == 1)
assert(intent2.extras.get("abc") == "ABC")
assert(intent2.extras.get("null") == null)
}
}
17 changes: 9 additions & 8 deletions anko/library/static/commons/src/Intents.kt
Original file line number Diff line number Diff line change
Expand Up @@ -26,28 +26,29 @@ import android.content.Intent
import android.net.Uri
import org.jetbrains.anko.internals.AnkoInternals

inline fun <reified T: Activity> Context.startActivity(vararg params: Pair<String, Any>) =

inline fun <reified T: Activity> Context.startActivity(vararg params: Pair<String, Any?>) =
AnkoInternals.internalStartActivity(this, T::class.java, params)

inline fun <reified T: Activity> AnkoContext<*>.startActivity(vararg params: Pair<String, Any>) =
inline fun <reified T: Activity> AnkoContext<*>.startActivity(vararg params: Pair<String, Any?>) =
AnkoInternals.internalStartActivity(ctx, T::class.java, params)

inline fun <reified T: Activity> Fragment.startActivity(vararg params: Pair<String, Any>) =
inline fun <reified T: Activity> Fragment.startActivity(vararg params: Pair<String, Any?>) =
AnkoInternals.internalStartActivity(activity, T::class.java, params)

inline fun <reified T: Activity> Activity.startActivityForResult(requestCode: Int, vararg params: Pair<String, Any>) =
inline fun <reified T: Activity> Activity.startActivityForResult(requestCode: Int, vararg params: Pair<String, Any?>) =
AnkoInternals.internalStartActivityForResult(this, T::class.java, requestCode, params)

inline fun <reified T: Activity> Fragment.startActivityForResult(requestCode: Int, vararg params: Pair<String, Any>) =
inline fun <reified T: Activity> Fragment.startActivityForResult(requestCode: Int, vararg params: Pair<String, Any?>) =
startActivityForResult(AnkoInternals.createIntent(act, T::class.java, params), requestCode)

inline fun <reified T: Service> Context.startService(vararg params: Pair<String, Any>) =
inline fun <reified T: Service> Context.startService(vararg params: Pair<String, Any?>) =
AnkoInternals.internalStartService(this, T::class.java, params)

inline fun <reified T: Service> AnkoContext<*>.startService(vararg params: Pair<String, Any>) =
inline fun <reified T: Service> AnkoContext<*>.startService(vararg params: Pair<String, Any?>) =
AnkoInternals.internalStartService(ctx, T::class.java, params)

inline fun <reified T: Service> Fragment.startService(vararg params: Pair<String, Any>) =
inline fun <reified T: Service> Fragment.startService(vararg params: Pair<String, Any?>) =
AnkoInternals.internalStartService(activity, T::class.java, params)

inline fun <reified T: Any> Context.intentFor(vararg params: Pair<String, Any?>): Intent =
Expand Down
6 changes: 3 additions & 3 deletions anko/library/static/commons/src/Internals.kt
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ object AnkoInternals {
fun internalStartActivity(
ctx: Context,
activity: Class<out Activity>,
params: Array<out Pair<String, Any>>
params: Array<out Pair<String, Any?>>
) {
ctx.startActivity(createIntent(ctx, activity, params))
}
Expand All @@ -123,7 +123,7 @@ object AnkoInternals {
act: Activity,
activity: Class<out Activity>,
requestCode: Int,
params: Array<out Pair<String, Any>>
params: Array<out Pair<String, Any?>>
) {
act.startActivityForResult(createIntent(act, activity, params), requestCode)
}
Expand All @@ -132,7 +132,7 @@ object AnkoInternals {
fun internalStartService(
ctx: Context,
activity: Class<out Service>,
params: Array<out Pair<String, Any>>
params: Array<out Pair<String, Any?>>
) {
ctx.startService(createIntent(ctx, activity, params))
}
Expand Down