Android 如何从片段中选择图像

Android 如何从片段中选择图像,android,android-fragments,android-intent,android-gallery,Android,Android Fragments,Android Intent,Android Gallery,首先,我是Android编程新手。 我想从图库中选择一张图片并上传。 所有这些都来自一个片段。 问题是,当我从片段中选择图像时,返回到第一个片段,而不是调用它的片段。 我对此进行了搜索,但在选择图像后未返回onActivityResult 这对我不管用 谢谢 这是我的密码 @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityRe

首先,我是Android编程新手。 我想从图库中选择一张图片并上传。 所有这些都来自一个片段。 问题是,当我从片段中选择图像时,返回到第一个片段,而不是调用它的片段。 我对此进行了搜索,但在选择图像后未返回onActivityResult 这对我不管用 谢谢

这是我的密码

    @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Log.e("fragment","fragment");
    if (resultCode == RESULT_OK) {
        if (requestCode == SELECT_PICTURE) {
            // Get the url from data
            selectedImageUri = data.getData();
            if (null != selectedImageUri) {
                // Get the path from the Uri
                String path = getPathFromURI(selectedImageUri);
                //Log.i(TAG, "Image Path : " + path);
                // Set the image in ImageView

            }
        }
    }
}

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

}
更新:已解决

除了呼吁startActivityForResult外,我在帖子上说了所有的话

    void openImageChooser() {
    Intent intent = new Intent();
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(Intent.createChooser(intent, "Select Picture"), SELECT_PICTURE);
}

    public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 122) {
        // Do your job

        if (resultCode == RESULT_OK) {
            if (requestCode == SELECT_PICTURE) {
                // Get the url from data
                selectedImageUri = data.getData();
                if (null != selectedImageUri) {
                    // Get the path from the Uri
                    String path = getPathFromURI(selectedImageUri);
                    //Log.i(TAG, "Image Path : " + path);
                    // Set the image in ImageView
                    guardar();
                }
            }
        }
    }

}
读那篇文章

所有接收到的结果都将在单个位置进行处理:onActivityResult是放置片段的活动的结果

因此,将onActivityResult移动到活动

之所以有意义,是因为活动启动了意图,而不是片段本身

getActivity().startActivityForResult

只需使用
startActivityForResult
而不首先使用getActivity。否则,在片段的父活动中实现onActivityResult,但不执行任何操作。当我选择图像返回到第一个片段时,post会检查您需要的所有内容。试着再读一遍吗?我把所有的文章再读一遍,然后重新编写代码,什么都没有。你知道有什么方法更容易做到这一点吗?你能用你更新的代码发布你的帖子吗?你做了多少调试来确定它不起作用?是的,我在我的活动中有这个
@Override protected void onActivityResult(int-requestCode,int-resultCode,Intent-data){super.onActivityResult(requestCode,resultCode,data);ActivityResultBus.getInstance().postQueue(新的ActivityResultEvent(请求代码、结果代码、数据));}
但是什么都没有,不起作用我不知道这条总线在做什么,但是如果你像那篇文章所说的那样使用Otto,你需要从片段中订阅事件,我相信是的,我在片段中有启动、启动和mActivityResultSubscriber的方法。我再次阅读了所有的文章,然后重新编写了代码,什么都没有。你知道吗更容易做到这一点吗?我的问题已经解决了,startActivityForResult(Intent.createChooser(Intent,“Select Picture”),Select_Picture;没有getActivity,其余的都一样