所以在我的适配器类中,我想允许用户捕获图像
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类!
正如尼基塔所说,你应该从片段调用startActivityForResult
,如果你想得到碎片的结果。
我想在适配器类中调用startActivityForResult,因此我需要上下文作为Activity然后创建OnItemClick接口使您的片段实现它并将它在构造函数中传递给您的适配器。然后当用户点击项目调用接口方法时
interface OnItemClickListener{
onClick(item:T)
}
Foo: Fragment, OnItemClickListener{
...
onClick(item:T){
startActivityForResult...
}
...
initAdapter(){
Adapter(listener=this,...)
}
}
并在你的适配器
...
itemView.setOnClickListener{
listener.onClick(item)
}
如果你想要调用片段的onActivityResult()
,请从片段调用startActivityForResult(intent, id)
,而不是从activity调用(尝试将片段引用传递给适配器)。
此外,请确保您没有覆盖活动的onActivityResult()
或在活动中调用super.onActivityResult()
。