有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    我接着设置了一个全局变量来存储当前要替换的图像。requestImage将其设置为当前图像ID,然后onActivityResult使用该变量。不是很优雅,但很管用