繁体   English   中英

从android图像库中选择并将其加载到另一个活动中不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM