kotlin Intent putExtra
时间: 2023-08-13 10:08:16 浏览: 65
在Kotlin中,我们可以使用自定义的委托类来简化Intent的putExtra操作。可以通过定义一个类,例如IntentExtraString,来处理Intent中String类型的额外数据。在这个类中,我们可以使用operator关键字重载getValue和setValue函数来读取和写入Intent中的数据。这样,我们就可以在使用Intent的地方直接通过委托属性的方式来设置和获取额外的数据。例如,我们可以使用类似以下的代码来设置和获取Intent中的数据:
```kotlin
class IntentExtraString(private val key: String) {
operator fun getValue(intent: Intent, property: KProperty<*>): String? =
intent.getStringExtra(key)
operator fun setValue(intent: Intent, property: KProperty<*>, value: String?) {
intent.putExtra(key, value)
}
}
// 使用
object IntentOptions {
var Intent.message by IntentExtraString("key for message")
}
// 在Activity中使用
class Activity : AppCompatActivity() {
companion object IntentOptions {
var Intent.id by IntentExtraString()
var Intent.name by IntentExtraString()
var Intent.message by IntentExtraString()
}
fun test(intent: Intent) {
intent.id = "1"
intent.name = "pass"
intent.message = "message"
}
}
// 在外部使用
fun testOutSide(intent: Intent) = with(Activity.IntentOptions) {
val id = intent.id
val name = intent.name
val message = intent.message
}
```
通过这种方式,我们可以更加简洁地操作Intent中的额外数据。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [利用 Kotlin 的特性,让 Intent 传递数据的方式更优雅!](https://blog.csdn.net/plokmju88/article/details/103355023)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]