Android 如何从片段中选择图像
首先,我是Android编程新手。 我想从图库中选择一张图片并上传。 所有这些都来自一个片段。 问题是,当我从片段中选择图像时,返回到第一个片段,而不是调用它的片段。 我对此进行了搜索,但在选择图像后未返回onActivityResult 这对我不管用 谢谢 这是我的密码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
@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,其余的都一样