有没有办法在 Kotlin 活动和 Java 活动之间获取结果?

Posted

技术标签:

【中文标题】有没有办法在 Kotlin 活动和 Java 活动之间获取结果?【英文标题】:Is there any way to getResult between Kotlin activity and Java activity? 【发布时间】: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 是的,你可以,这两个活动所用的语言无关紧要。 当然他们共享同一个编译器 【参考方案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)
    
    

【讨论】:

以上是关于有没有办法在 Kotlin 活动和 Java 活动之间获取结果?的主要内容,如果未能解决你的问题,请参考以下文章

活动推荐 | Kotlin 开发者技术沙龙

如何将数据从 java 服务类发送到 kotlin 活动类? [关闭]

如何使用 Kotlin 在所有活动中播放背景音乐?

如何在 android Kotlin 中获取以前的活动

如何在 kotlin android 的活动中访问应用程序类变量

使用 Kotlin 的片段和活动