无法在 Anko 中调用 StartActivityForResult
Can't Call StartActivityForResult in Anko
我是 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 作为 children,context
是传递给 ViewGroup
的 Context
] 的主要构造函数。我是否应该在管理自定义 ViewGroup
的 Activity
中设置 onClickListeners
?如果不是,我怎么调用StartActivityForResult
?
startActivityForResult
只能在 Activity
上调用,因为只有 Activity
可以从另一个整理 Activity
接收结果。有一些解决方案,可能最简单的方法是更改您的自定义 ViewGroup
以便它接受 Activity
而不仅仅是 Context
,或者,如果您知道您将只使用它ViewGroup
从 Activity
,只需将 Context
转换为 Activity
。
虽然您说您的代码可能会组织得更好,以完全避免这个问题,但您是对的。在关注点分离之后,您的 ViewGroup
不应该对您应用程序中的导航操作负责。例如,ViewGroup
可以允许侦听器注册现在触发导航操作的事件。这样,Activity
可以注册该事件,自行进行导航并处理 ViewGroup
.
之外的结果
我是 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 作为 children,context
是传递给 ViewGroup
的 Context
] 的主要构造函数。我是否应该在管理自定义 ViewGroup
的 Activity
中设置 onClickListeners
?如果不是,我怎么调用StartActivityForResult
?
startActivityForResult
只能在 Activity
上调用,因为只有 Activity
可以从另一个整理 Activity
接收结果。有一些解决方案,可能最简单的方法是更改您的自定义 ViewGroup
以便它接受 Activity
而不仅仅是 Context
,或者,如果您知道您将只使用它ViewGroup
从 Activity
,只需将 Context
转换为 Activity
。
虽然您说您的代码可能会组织得更好,以完全避免这个问题,但您是对的。在关注点分离之后,您的 ViewGroup
不应该对您应用程序中的导航操作负责。例如,ViewGroup
可以允许侦听器注册现在触发导航操作的事件。这样,Activity
可以注册该事件,自行进行导航并处理 ViewGroup
.