【发布时间】:2019-07-08 15:02:12
【问题描述】:
在适配器类中,用户可以在单击holder.image 时捕获图像。我在 Fragment 中设置了onActivityResult,但它没有被调用。
片段
grid.setAdapter(ImageListAdapter(getActivity(), listOfImagesPath))
....
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
val mAdapter: ImageListAdapter?=null
mAdapter?.onActivityResult(requestCode, resultCode, data);
longToast("abc")
var bitmap: Bitmap? = null
if (requestCode == 1 && resultCode == Activity.RESULT_OK) {
longToast("hello")
} else {
longToast("bye")
}
}
适配器
class ImageListAdapter(
private val context: FragmentActivity?,
private val imgPics: List<String>?
) : BaseAdapter() {
override fun getItem(position: Int): Any {
return position
}
override fun getItemId(position: Int): Long {
return position.toLong()
}
override fun getCount(): Int {
if (imgPics != null)
return imgPics.size
else
return 1;
}
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
var holder: ItemHolder
var convertView = convertView
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.grid_item, null)
holder = ItemHolder()
holder.image = convertView!!.findViewById(R.id.imageView)
holder.image?.setImageResource(R.drawable.ic_add)
holder.image?.setColorFilter(R.color.colorGainsboro, PorterDuff.Mode.SRC_ATOP);
convertView.tag = holder
}
holder = convertView?.tag as ItemHolder
....
holder.image?.setImageBitmap(bm)
}
}
holder.image?.setOnClickListener{
dispatchTakePictureIntent()
}
return convertView
}
private fun dispatchTakePictureIntent() {
try {
val captureIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE);
context?.startActivityForResult(captureIntent, 1);
} catch (e: ActivityNotFoundException) {
e.printStackTrace()
}
}
fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
Log.e("MyAdapter", "onActivityResult")
}
internal class ItemHolder {
var image: ImageView? = null
}
}
有人有想法吗?
【问题讨论】:
-
您使用哪种活动类型作为基础,AppCompatActivity?
-
尝试使用宿主活动而不是片段。从适配器的 onActivityResult 调用函数
-
@sinek Fragment()
-
你刚才问的stackoverflow.com/questions/54685955/…不是同一个问题吗?
标签: android android-fragments kotlin startactivityforresult