我很难过来向人们寻求帮助,但我一直坚持这个问题,这让我很生气。
我试图从MainActivity中取一个按钮,它会将您带入相机并拍照。然后它会带您进入下一个活动,其中预览了相同的图像。但每当我到达下一个活动时,图像都不会显示,只是一个占位符。我究竟做错了什么?我在代码中遗漏了什么吗?
我一直在环顾四周并尝试使用Uri,但显然它不再允许,因为您需要为该操作提供特定权限,因此建议使用FileProvider,但老实说它是' sa像我这样的初学者有点太难了。我试了几个小时都失败了。
MainActivity
public class MainActivity extends AppCompatActivity {
int CAPTURE_REQUEST;
Button button;
Bitmap thumbnail;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.button);
button.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View view) {
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAPTURE_REQUEST);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if (requestCode == CAPTURE_REQUEST) {
Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
sendImage();
}
}
}
private void sendImage() {
Intent intent = new Intent(MainActivity.this, NextActivity.class);
intent.putExtra("image", thumbnail);
startActivity(intent);
}}
NextActivity
public class NextActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
ImageView imageView = (ImageView) findViewById(R.id.imageView);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_next);
Bundle extras = getIntent().getExtras();
if (extras != null) {
Bitmap image = (Bitmap) extras.get("image");
if (image != null) {
imageView.setImageBitmap(image);
}
}
}}
答案 0 :(得分:2)
将onActivityResult更改为
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if (requestCode == CAPTURE_REQUEST) {
thumbnail = (Bitmap) data.getExtras().get("data");
sendImage();
}
}
您使用本地声明覆盖全局变量。