【问题标题】:Is there any way to getResult between Kotlin activity and Java activity?有没有办法在 Kotlin 活动和 Java 活动之间获取结果?
【发布时间】:2021-11-28 14:00:53
【问题描述】:

我正在尝试将数据从 Java Activity 传递到 Kotlin Activity。 这可能吗?

kotlin 方面:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)

if (requestCode == newFriendActivityRequestCode && resultCode == Activity.RESULT_OK) {
    data?.getStringExtra(manualActivity.EXTRA_REPLY)?.let {
        
        val friendViewModel: FriendViewModel by viewModels {
            FriendViewModelFactory((application as FriendsApplication).repository)
        }

        val friend = Friend(1, it)
        friendViewModel.insert(friend)
    }
} 

Java端:

Intent resultIntent = new Intent();
resultIntent.putExtra("name", name);
setResult(RESULT_OK, resultIntent);
finish();

kotlin 参考代码: https://developer.android.com/codelabs/android-room-with-a-view-kotlin#14

【问题讨论】:

  • 你从intent中获取数据,你没有使用你设置数据时使用的key
  • 是的,你可以,这两个活动所用的语言无关紧要。
  • 当然他们共享同一个编译器

标签: java android kotlin android-activity


【解决方案1】:

根据您在 java 的辅助活动中的代码,您使用密钥 name 发送数据,但在使用 kotlin 的辅助活动中,您收到错误的密钥,正确的代码是这样的

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {

    if (requestCode ==1 /*request code use to start activity java code*/ && resultCode ==
        Activity.RESULT_OK
            ) {
        val name =data?.getStringExtra("name")?.let {    // name key you send it from java activity
             return@let it
        }
        super.onActivityResult(requestCode, resultCode, data)
    }
    
}

【讨论】:

    猜你喜欢
    • 2011-06-18
    • 1970-01-01
    • 1970-01-01
    • 2022-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-11
    • 1970-01-01
    相关资源
    最近更新 更多