Android - getIntExtra在onActivityResult中产生默认值

时间:2017-05-27 20:09:42

标签: java android android-intent

我试图允许用户从他们的图库中选择一个图像来替换我的活动中的现有图像(这是根据数据库值以编程方式添加的)。这是我的代码中导致一些问题的部分:

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

答案 0 :(得分:0)

我继续设置了一个全局变量来存储当前为替换设置的图像。 requestImage将其设置为当前图像ID,然后onActivityResult使用该变量。不是很优雅,但它有效!