【问题标题】:How to choose image from Fragment如何从片段中选择图像
【发布时间】:2017-02-16 15:33:56
【问题描述】:

首先,我是 Android 编程新手。 我想从图库中选择一张图片并上传。 所有这一切都来自一个片段。 问题是当我从片段中选择图像时,返回到第一个片段,而不是调用它的片段。 我对此进行了搜索,但选择图像后不返回 onActivityResult 这个https://inthecheesefactory.com/blog/how-to-fix-nested-fragment-onactivityresult-issue/en 不适合我 谢谢

这是我的代码

    @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();
                }
            }
        }
    }

}

【问题讨论】:

  • 只使用startActivityForResult 而不首先使用getActivity。否则,在Fragment的父Activity中实现onActivityResult
  • 试过了,但没有。当我选择图像返回到第一个片段
  • 该帖子涵盖了您需要的所有内容。再读一遍?
  • 我再次阅读了所有帖子并再次重新编写代码,但什么也没有。你知道有什么更简单的方法吗?
  • 你可以edit你的帖子更新代码吗?您做了多少调试以确定它不起作用?

标签: android android-fragments android-intent android-gallery


【解决方案1】:

阅读那篇文章...

收到的所有结果都将在一个地方处理:放置 Fragment 的 Activity 的 onActivityResult。

因此,将您的 onActivityResult 移至 Activity。

有意义,因为 Activity 启动了意图,而不是 Fragment 本身。

getActivity().startActivityForResult

【讨论】:

  • 是的,我的活动中有这个 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); ActivityResultBus.getInstance().postQueue( new ActivityResultEvent(requestCode, resultCode, data)); } 但什么都没有,不起作用
  • 我不知道这辆巴士在做什么,但如果你像那篇帖子所说的那样使用 Otto,我相信你需要从 Fragment 订阅事件
  • 是的,我在 Fragment 中有 onStart、onStop 和 mActivityResultSubscriber 方法。我再次阅读了所有帖子并再次重新编写代码,但什么也没有。你知道有什么更简单的方法吗?
  • 我的问题解决了,startActivityForResult(Intent.createChooser(intent, "Select Picture"), SELECT_PICTURE);没有getActivity,其他都一样
猜你喜欢
  • 2013-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-15
  • 1970-01-01
相关资源
最近更新 更多