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标红是为什么,怎么解决
时间: 2023-12-21 19:07:41 浏览: 156
这段代码中的 `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 对象中获取了照片数据。
以下代码,请用Bitmap替换Glide来实现同样的功能 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == Activity.RESULT_OK) { if (requestCode == REQUEST_IMAGE_CAPTURE) { Bitmap photo = (Bitmap) data.getExtras().get("data"); Uri tempUri = getImageUri(photo); selectedImagePath = tempUri.getPath(); Glide.with(this).load(tempUri).into(imageView); } else if (requestCode == REQUEST_IMAGE_PICK) { Uri selectedImageUri = data.getData(); selectedImagePath = selectedImageUri.getPath(); Glide.with(this).load(selectedImageUri).into(imageView); } } }
以下是使用Bitmap替换Glide的代码实现:
```java
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK) {
if (requestCode == REQUEST_IMAGE_CAPTURE) {
Bitmap photo = (Bitmap) data.getExtras().get("data");
Uri tempUri = getImageUri(photo);
selectedImagePath = tempUri.getPath();
imageView.setImageBitmap(photo);
} else if (requestCode == REQUEST_IMAGE_PICK) {
Uri selectedImageUri = data.getData();
selectedImagePath = selectedImageUri.getPath();
try {
Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), selectedImageUri);
imageView.setImageBitmap(bitmap);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
```
在这个代码中,我们通过`setImageBitmap()`方法将Bitmap对象直接设置到ImageView中,而不是使用Glide库加载图片。对于拍摄的照片,我们直接使用`photo`作为Bitmap对象;对于从相册选择的照片,我们使用`MediaStore`来获取Bitmap对象。
阅读全文