【发布时间】:2019-07-20 21:12:06
【问题描述】:
我的活动流程是这样的。
在FragmentA 中,它允许用户捕获图像,图像将显示在Activity B 上供用户进行编辑。
片段 A
mImageListAdapter.mAddImageClickListener = object : ImageListAdapter.AddImageClickListener {
override fun addImageClicked() {
val options = arrayOf<CharSequence>("Take Photo", "Choose From Gallery", "Cancel")
val builder = android.support.v7.app.AlertDialog.Builder(activity)
builder.setTitle("Select Option")
builder.setItems(options) { dialog, item ->
if (options[item] == "Take Photo") {
dialog.dismiss()
val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
startActivityForResult(intent, CAMERA_CAPTURE)
}
}
builder.show()
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
var bitmap: Bitmap? = null
if (requestCode == CAMERA_CAPTURE && resultCode == Activity.RESULT_OK) {
val extras = data?.extras
if (extras != null) {
bitmap = extras.get("data") as Bitmap
val intent = Intent(activity, ActivityB::class.java)
intent.putExtra("bitmap", bitmap)
startActivityForResult(intent, 12)
}
} else if (requestCode == 12 && resultCode == Activity.RESULT_OK) {
longToast("It get result from Activity B")
} else {
longToast("Nothing")
}
}
在Activity B中,一旦点击完成按钮,编辑后的图像会返回到片段A,我预计会显示“It get result from Activity B”,但什么都没有显示!
活动 B
doneBtn.setOnClickListener {
image.buildDrawingCache()
val bitmap = image.getDrawingCache()
val resultIntent = Intent()
resultIntent.putExtra("bitmap", bitmap)
setResult(Activity.RESULT_OK, resultIntent)
finish()
}
【问题讨论】:
-
尝试从所有地方删除该行intent.putExtra("bitmap", bitmap) 并查看日志longToast("It get the result from Activity B")。如果出现日志消息“It get the result from Activity B”,那么问题是位图参数对于 Bundle 来说太大了。或者尝试在您的主机片段活动中登录活动结果。
-
@SergeyBukarev 你说得对,我现在得到了 Toast,但是如何传递位图?
-
通过静态变量传递它或将位图保存到文件并从包传递文件名。 Bundle 参数有大小限制。
-
@SergeyBukarev 让我试试
标签: android android-fragments android-activity kotlin onactivityresult