从 fragment 类中的图库中选择图像不起作用。
我尝试了更多堆栈代码。
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"), GALLERY_INTENT_CALLED);
} else {
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("image/*");
startActivityForResult(intent, GALLERY_KITKAT_INTENT_CALLED);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}
以上代码在 Activity 类中运行。不适用于纯 fragment 类。
最佳答案
如果您从 fragment
调用startActivityForResult()
方法,您有两个选择:
- 直接调用
startActivityForResult()
- 调用
getActivity().startActivityForResult()
在您的情况下,如果您想处理 Activity
的结果,请按以下方式更改您的代码:
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
getActivity().startActivityForResult(Intent.createChooser(intent, "Select Picture"), GALLERY_INTENT_CALLED);
} else {
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("image/*");
getActivity().startActivityForResult(intent, GALLERY_KITKAT_INTENT_CALLED);
}
否则,如果您需要处理调用 Fragment
中的结果,而它目前无法正常工作,则您可能遇到了传播 问题。 this post 中广泛描述了此类问题.
可以找到关于startActivityForResult 和嵌套 fragment 的详细文章here .
关于android - 从库中选择图像在 Android 的 fragment 类中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32993937/