android - "putExtra"是如何工作的?

标签 android android-intent

我正在关注这个例子:

http://developer.android.com/training/camera/photobasics.html

如果您为此 putExtra(MediaStore.EXTRA_OUTPUT 按 Ctrl-F,它会将您带到一段我不确定的代码。在应用程序的更上方,它们会覆盖 onActivityResult 并尝试将此 Intent 中的图像从 Activity 结果中拉出以显示在应用程序中,但是当我这样做时 onActivityResult 中的 Intent arg 为空。我尝试更改我的 putExtra 获取 "data" 而不是 MediaStore.EXTRA_OUTPUT 突然间它完美地工作了。

谁能解释一下本教程试图让我做什么?

所以基本上,有问题的代码:

static final int REQUEST_IMAGE_CAPTURE = 1;

private void dispatchTakePictureIntent() {
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    // Ensure that there's a camera activity to handle the intent
    if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
        // Create the File where the photo should go
        File photoFile = null;
        try {
            photoFile = createImageFile();
        } catch (IOException ex) {
            // Error occurred while creating the File
            ...
        }
        // Continue only if the File was successfully created
        if (photoFile != null) {
            takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,
                    Uri.fromFile(photoFile));
            startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO);
        }
    }
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
        Bundle extras = data.getExtras();
        Bitmap imageBitmap = (Bitmap) extras.get("data");
        mImageView.setImageBitmap(imageBitmap);
    }
}
onActivityResult 中的

Intent data 为空,因此当我调用 getExtras 时它会崩溃。我将 dispatchTakePictureIntent 更改为 putExtra("data", Uri.fromFile(photoFile)); 并且它有效。

如果这是 Google 的错误并且在他们的教程中犯了错误,或者我做错了什么/不明白,我只是感到困惑?我想进行此更改的唯一原因是因为它在调用 extras.get("data") 时使用字符串 data。所以我什至不明白我的解决方案:(

最佳答案

putExtra("NameOfExtra", object)

所以他们得到了一个额外的命名“数据”——该字符串是之前放置的额外值的名称。

关于android - "putExtra"是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20846583/

相关文章:

Android java.lang.OutOfMemoryError?

android - 在 Android 上监听自己的应用程序卸载事件

android - OpenCV Service Intent 必须是明确的,Android 5.0 Lollipop

java - 相机 Intent 使 Android 应用程序不断崩溃

java - 无法使用 jsoup 从网站获取任何 HTML 代码

android - 任务 generateJsonModelArmDebug 执行失败

android - 使用 Android Asset 文件夹中的 HTML 和 Javascript 读取 Epub 文件?

android - 从应用程序 apk 安装程序中删除完成按钮

android - 强制视频在 Android 上的 Youtube 应用程序中打开

android - 从 ListView 中获取所有勾选的项目