有没有办法在 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 活动之间获取结果?的主要内容,如果未能解决你的问题,请参考以下文章
如何将数据从 java 服务类发送到 kotlin 活动类? [关闭]