我需要帮助。 我有一个像Meme Generator这样的项目,我有两个活动。 Activity_main(用户界面并有一个触发按钮"选择摄像机选项" 和Creatememe(作为第二个活动显示来自Activity_main的捕获图像)。
现在我的问题是,当我使用Android 4.0.4降低版本时图像正在通过第二个活动。 使用高于4.0.4的Android版本时,图像没有传递给第二个活动,图像只显示在Activity_main中。 preview.setImageBitmap(bitmap)//< - 在Activity_main中显示图像。
以下是AndroidManifest文件的代码
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-feature android:name="android.hardware.camera"/>
然后这是我的Activity_main代码
try {
InputStream input = getContentResolver().openInputStream(selectedImageUri);
final Bitmap bitmap = BitmapFactory.decodeStream(input);
preview.setImageBitmap(bitmap);
preview.setDrawingCacheEnabled(true);
Bitmap b= preview.getDrawingCache();
Intent i = new Intent(this, CreateMeme.class);
i.putExtra("Bitmap", b);
startActivity(i);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
然后是我的第二个活动代码
imageView = (ImageView) findViewById(R.id.imageView2);
Intent intent = getIntent();
Bitmap bitmap = intent.getParcelableExtra("Bitmap");
imageView.setImageBitmap(bitmap);
答案 0 :(得分:0)
在“选择摄像机选项”的OnClickListener上使用下一个方法
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);
}
}
然后,覆盖OnActivityResult
并像这样处理结果
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
Bundle extras = data.getExtras();
Intent intent = new Intent(MainActivity.this,CreateMeme.class);
intent.putExtras(extras);
startActivity(intent);
}
}
在你的CreateMeme.class上处理类似的附加内容 -
imageView = (ImageView) findViewById(R.id.imageView2);
Intent intent = getIntent();
Bundle extras = intent.getExtras();
Bitmap imageBitmap = (Bitmap) extras.get("data");
imageView.setImageBitmap(bitmap);
有关详细信息,请参阅此link