我有一个带溢出菜单的CardView(播放器的CardView)。菜单有一个编辑和删除,当你点击编辑时,启动一个对话框,这个对话框中有很多属性。其中之一是ImageView(玩家的照片),当您点击启动Intent时,您可以在图库中选择一张照片。 我的问题是如何获得该图像并设置我的ImageView?
在另一个帖子中,我看到它们被startActivity
和onActivityResult
使用,但在我的CardView中,我无法使用此方法。
我无法使用onActivityResult和startActivity来管理我从图库中选择的图片
谢谢!
答案 0 :(得分:0)
如果你不能使用onActivityResult,那么有一个可能适合你的解决方案。
创建第二个Activity(PickImageActivity)
在Intent
中存储ResultReceiver作为参数从那个Activity onCreate
启动startActivityForResult Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE);
在onActivityResult中你有这样的东西:
Bitmap received = BitmapFactory.decodeStream(getContentResolver().openInputStream(data.getData()));
Bundle result = new Bundle();
result.putParcelable(RESULT_KEY, received);
((ResultReceiver) getIntent().getParcelableExtra(RECEIVER_KEY)).send(RESULT_OK, result);
finish();
所以你可以这样开始:
Intent pickImage = new Intent(this, PickImageActivity.class);
pickImage.putExtra(RECEIVER_KEY, new ResultReceiver() {
public void onReceive(int resultCode, Bundle data) {
//Work with the data received here trough RESULT_KEY
}
});
如果位图不适合您的内存,请发送内容文件路径。
这个解决方案确实有效,我在项目中实现了它,但是对于activityResult进行了重构,如果上一个Activity被销毁,你就不会收到数据