gpt4 book ai didi

android - 无法在 Anko 中调用 StartActivityForResult

转载 作者:行者123 更新时间:2023-11-29 00:03:33 25 4
gpt4 key购买 nike

我是 android 的新手,我正在尝试使用 kotlin 来学习它。在这段代码中

mHelp.setOnClickListener {context.startActivity<HelpActivity>()}
mSettings.setOnClickListener {
context.startActivityForResult<LocalSettingsActivity>(
LOCAL_SETTINGS_REQUEST,
"coords" to this.board.mCoords,
"drag" to this.mWhiteStones[0].drag )
}

调用startActivity工作正常,但我在调用 startActivityForResult 时遇到语法错误.该错误表明这是接收器类型不匹配,并且接收器应该是 Activity。或 Fragment .另一方面,StartActivity 的接收者可以是 Fragment , 一个 Context ,或 AnkoContext<*> (无论那是什么)。

当然,我可以通过构建 Intent 来完成这项工作(我认为)并且不使用 anko.StartActivityForResult ,但我想了解发生了什么。

我突然想到,也许我的代码组织有误。上面的代码在自定义 ViewGroup 中有 ImageButtons mHelp 和 mSettings 作为子项,以及 contextContext传递给了 ViewGroup的主要构造函数。我是否应该设置 onClickListenersActivity管理自定义 ViewGroup ?如果没有,我怎么称呼StartActivityForResult

最佳答案

startActivityForResult 只能在 Activity 上调用,因为只有 Activity 可以从另一个完成的 Activity 接收结果>。有一些解决方案,可能最简单的方法是更改​​您的自定义 ViewGroup 以便它接受 Activity 而不仅仅是 Context,或者,如果您知道您只会使用 Activity 中的 ViewGroup,只需将 Context 转换为 Activity

虽然您说您的代码可能会组织得更好,以完全避免这个问题,但您是对的。在关注点分离之后,您的 ViewGroup 不应该负责您应用程序中的导航操作。例如,ViewGroup 可以允许监听器注册现在触发导航操作的事件。这样,Activity 可以注册该事件,自行进行导航并在 ViewGroup 之外处理结果。

关于android - 无法在 Anko 中调用 StartActivityForResult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45225642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com