[英]picking from android image gallery and loading it into another activity not working
我希望用户从图库中选择一个图像,然后该应用程序将进入另一个活动并将图像加载到那里。 这是打开文件选择器。
private void openFileChooser() {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
getActivity().startActivityForResult(intent, PICK_IMAGE_REQUEST);
}
这就是我的onActivityResult中的内容
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK
&& data != null && data.getData() != null) {
mImageUri = data.getData();
Intent intent = new Intent(getActivity(),AddActivity.class);
intent.putExtra("imagePath",mImageUri.toString());
intent.putExtra("requestCode",PICK_IMAGE_REQUEST);
startActivity(intent);
}
这是我第二个活动的代码,基本上,用户可以打开相机并拍照,也可以从图片库中选择。 从相机拍照的作品,但选择图像并不就是为什么我有两个请求代码。
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_additem);
Log.i(TAG, "onCreate: started");
setupBottomNavigationView();
imageView = findViewById(R.id.addPic);
Bundle extras = getIntent().getExtras();
int requestCode = extras.getInt("requestCode");
if (requestCode == 0) {
if (extras != null) {
Bitmap image = (Bitmap) extras.get("image");
if (image != null) {
imageView.setImageBitmap(image);
}
}
if (requestCode == 1) {
Intent intent = getIntent();
String image_path = intent.getStringExtra("imagePath");
Uri fileUri = Uri.parse(image_path);
imageView.setImageURI(fileUri);
}
}
}
无法理解为什么它不起作用,选择图像后,我的Android应用程序甚至都没有进行第二次活动。 它只是返回到家庭活动。
更改
if (requestCode == 0) {
至
if (requestCode != 0) {
我不确定这是否是引起您注意的所有问题的原因,但是您的if语句嵌套在它们可能不应该出现的时候
if(requestCode == 0 ) {
// only gets here if requestCode == 0
if(requestCode == 1) {
//this will never be executed, requestCode == 0
}
}
我想你想要更多类似的东西
switch(requestCode) {
case 0:
// do stuff
break;
case 1:
// do stuff
break;
}
我假设PICK_IMAGE_REQUEST
设置为1
,这是行不通的情况吗?
好吧,我解决了。 我在文件Chooser()中调用活动的结果活动。 我将其修改为只是startActivityFor(...)而不是getActivity()。startActivityFor(...)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.