首页 > 解决方案 > 尝试从片段中的图像库中选择图像 - Android

问题描述

我正在尝试使用片段中的此代码从图像库中选择图像:

    Intent intent = new Intent();
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_CALLBACK);

在我的活动中,我放置了以下代码:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == FirstInstallFragment.PICK_IMAGE_CALLBACK && resultCode == Activity.RESULT_OK) {
        if (data.getData() == null) {
            return;
        }

        FirstInstallFragment firstInstallFragment = (FirstInstallFragment) getSupportFragmentManager().findFragmentByTag(FIRST_INSTALL_FRAGMENT_TAG);
        if (firstInstallFragment != null && firstInstallFragment.isVisible())
        {
            firstInstallFragment.onOpenImageResult(data);
        } 
    } 
}

现在奇怪的是,当我从图片库中选择一张图片时,我的应用程序会关闭,但不是以关闭的方式关闭,而是当您处于活动中并且按下后退按钮并且它关闭但仍在后台运行时。

我在里面放了一个断点,onActivityResult()但它不起作用,所以我猜它不会进入里面onActivityResult()

为什么会发生这种情况,我如何在选择图像后再次显示片段?

标签: androidandroid-activity

解决方案


不是onActivityResult()在活动中调用,而是在片段中调用相同的,因为您已经使用过startActivityForResult()而不是getActivity().startActivityForResult()所以这就是为什么您无法在活动中获得回调的原因onActivityResult()

你可以这样做

 Intent intent = new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        getActivity().startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_CALLBACK);

或者您可以在片段中覆盖此方法

@Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
    }

当您调用活动方法时startActivityForResult()onActivityResult()将首先获得响应,onActivityResult()然后触发片段。


推荐阅读