if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { // 将照片路径保存在 Bundle 中 Bundle extras = new Bundle(); extras.putString("photo_path", mCurrentPhotoPath); // 启动新的 Activity 并传递 Bundle Intent intent = new Intent(this, NewActivity.class); intent.putExtras(extras); startActivity(intent);这段代码中intent.putExtras(extras)标红是为什么,怎么解决
时间: 2024-01-22 21:18:38 浏览: 94
这里标红的原因是 `Intent` 类中的 `putExtras()` 方法需要传入一个 `Bundle` 类型的参数,而你传入的是一个 `Bundle` 对象的引用。这种情况下,可以将 `extras` 直接传入 `Intent` 的构造方法中,如下所示:
```
Intent intent = new Intent(this, NewActivity.class);
intent.putExtra("photo_path", mCurrentPhotoPath);
startActivity(intent);
```
或者使用 `putExtra()` 方法,传入键值对的方式:
```
Intent intent = new Intent(this, NewActivity.class);
intent.putExtra("photo_path", mCurrentPhotoPath);
startActivity(intent);
```
这两种方式都可以正确地传递数据到新的 Activity 中。
相关问题
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { // 将照片路径保存在 Bundle 中 Bundle extras = new Bundle(); extras.putString("photo_path", mCurrentPhotoPath); // 启动新的 Activity 并传递 Bundle Intent intent = new Intent(this, NewActivity.class); intent.putExtras(extras); startActivity(intent);这段代码中extras标红是为什么,怎么解决
这段代码中的 `extras` 变量在此处未定义,导致编译器无法识别它的类型。要解决这个问题,你需要先定义一个 `Bundle` 对象,例如:
```
Bundle extras = new Bundle();
```
然后再将数据放入 `extras` 中,例如:
```
extras.putString("photo_path", mCurrentPhotoPath);
```
这样就可以使用 `extras` 了,不会出现标红的情况。
java private static final int REQUEST_IMAGE_CAPTURE = 1; private void dispatchTakePictureIntent() { Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); if (takePictureIntent.resolveActivity(getPackageManager()) != null) { startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE); } } @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"); // 处理照片数据 } }这段代码中data是图片的路径吗
不是,data并不是图片的路径。在这段代码中,我们使用了 `startActivityForResult` 方法来启动一个拍照的 Intent,并传入了一个请求码 `REQUEST_IMAGE_CAPTURE`。当拍照完成后,系统会调用 `onActivityResult` 方法,并传入请求码、结果码以及包含了拍摄照片数据的 Intent 对象。我们可以从这个 Intent 对象中获取照片数据,而不是照片的路径。在这个例子中,我们使用了 `getExtras()` 方法获取 Intent 中的 Bundle 对象,然后从这个 Bundle 对象中获取了照片数据。
阅读全文