【发布时间】:2023-03-22 05:48:02
【问题描述】:
我对 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 作为孩子,context 是Context 传递给ViewGroup 的主要构造函数。我是否应该在管理自定义ViewGroup 的Activity 中设置onClickListeners?如果没有,我怎么称呼StartActivityForResult?
【问题讨论】: