因此,在我的适配器类中,我想允许用户捕获图像
fun dispatchTakePictureIntent() {
try {
val captureIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE);
(context as Activity).startActivityForResult(captureIntent, 1)
} catch (e: ActivityNotFoundException) {
e.printStackTrace()
}
}
fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
Log.d("MyAdapter", "onActivityResult")
}
我希望调用片段类中的onActivityResult
,但不会。
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
val imageListAdapter : ImageListAdapter?=null
imageListAdapter?.onActivityResult(requestCode, resultCode,data)
if (requestCode == 1 && resultCode == Activity.RESULT_OK)
{
longToast("called")
}else{
longToast("no")
}
}
没有显示吐司。如何解决?
我意识到onActivityResult
可以在我的Activity类之一中使用,但是我想在Fragment类中使用!
答案 0 :(得分:1)
如果要调用片段的onActivityResult()
,请从片段而不是从活动调用startActivityForResult(intent, id)
(尝试将片段引用传递给适配器)。
另外,请确保您没有覆盖活动的onActivityResult()
或在活动中调用super.onActivityResult()
。
答案 1 :(得分:0)
如nikita所说,如果要获取片段中的结果,应从片段中调用startActivityForResult
。
我想在适配器类中调用startActivityForResult,所以我会 需要上下文作为活动 然后创建OnItemClick接口,使您的片段实现它,并将其在构造函数中传递给适配器。然后,当用户单击项目调用界面方法
interface OnItemClickListener{
onClick(item:T)
}
Foo: Fragment, OnItemClickListener{
...
onClick(item:T){
startActivityForResult...
}
...
initAdapter(){
Adapter(listener=this,...)
}
}
在您的适配器中
...
itemView.setOnClickListener{
listener.onClick(item)
}