java Android getIntExtra会在onActivityResult中生成默认值
我试图允许用户从他们的图库中选择一个图像,以替换我活动中的现有图像(该图像是根据DB值通过编程添加的)。下面是我的代码中导致一些问题的部分:
public void requestImage(int imageID){
Intent intent = new Intent();
intent.putExtra("imageID",imageID);
intent.setType("image/*");
Log.v("requestImage",Integer.toString(intent.getIntExtra("imageID",0)));
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) {
Uri uri = data.getData();
try {
Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri);
int imageID = data.getIntExtra("imageID",0);
Log.v("onactivityresult",Integer.toString(imageID));
} catch (IOException e) {
e.printStackTrace();
}
}
}
目标是获取为该函数选择的图像的ID,我将其传递到requestImage,再传递到onActivityResult。onActivityResult包含用于根据用户选择的图像设置图像位图的代码(为了简洁起见,从代码示例中省略)
请注意两条日志记录语句,它们会导致:
05-27 15:51:31.756 7769-7769/com.praytoday.app.praytoday V/requestImage: 12
05-27 15:45:55.511 2037-2037/com.praytoday.app.praytoday V/onactivityresult: 0
正如您在日志语句中所注意到的,第一个日志实际上是从intent本身获取int,因此我确信它设置正确(这里没有任何类型问题)
在我看来,数据不能是相同的意图(请原谅我缺乏关于意图的知识——这对我来说是非常新的)
我尝试过的事情:
- 使用getIntent()代替数据
- 不使用createChooser,而只是使用简单的意图
- 看看我能找到的每一个问题/答案
如果您能帮助确定为什么这个额外的值不在数据参数中,我们将不胜感激!提前谢谢
# 1 楼答案
我接着设置了一个全局变量来存储当前要替换的图像。requestImage将其设置为当前图像ID,然后onActivityResult使用该变量。不是很优雅,但很管用