提问人:Laser 提问时间:8/9/2023 最后编辑:Laser 更新时间:8/9/2023 访问量:28
如何在活动或片段之外使用 StartActivityResult()?
How to use StartActivityResult() outside activity or fragment?
问:
基本上,我有一个按意图打开相机的函数,我正在尝试将该函数添加到Extention功能文件中,但收到错误说“create function startActivityForResult”。那么谁能帮忙实现这一目标呢?
private fun imageChooser() {
//passing intent.
val i = Intent ()
i.type = "image/*"
i.action = Intent.ACTION_GET_CONTENT
//Getting error here when i am pasting this code in a different file
called extention function.
startActivityForResult (i, 0)
}
答:
0赞
ItzDavi
8/9/2023
#1
若要在非活动类中使用,必须使用对活动的引用。startActivityForResult()
将 Activity 作为参数传递给您正在使用的函数,并在 non-activity 类中使用它:
private fun imageChooser(activity: Activity) {
val intent = Intent()
activity.startActivityForResult(intent,0)
}
或活动:
this.startActivityForResult(intent, 0)
或片段:
activity?.startActivityForResult(Intent(), 0)
requireActivity().startActivityForResult(Intent(), 0)
重要
startActivityForResult()
已弃用。
从官方文档中遵循此操作
评论
0赞
CommonsWare
8/9/2023
切勿直接创建 的实例。ComponentActivity
0赞
ItzDavi
8/9/2023
为什么?你能解释更多吗?立即将其从答案中删除,谢谢!
0赞
CommonsWare
8/9/2023
切勿直接创建 的实例或任何子类。活动需要由框架实例化才能正常工作,包括启动其他活动的能力。Activity
Activity
0赞
ItzDavi
8/9/2023
从答案中删除,现在好吗?谢谢你的解释!
1赞
Laser
8/9/2023
是的,现在将活动作为参数传递已经解决了我的问题
评论
startActivityForResult()