android - 从库中选择图像在 Android 的 fragment 类中不起作用

标签 android fragment android-dialogfragment android-gallery

从 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()方法,您有两个选择:

  1. 直接调用startActivityForResult()
  2. 调用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/

相关文章:

android - 将方形图像裁剪为圆形 - 以编程方式

Android 从服务更新 Activity UI

java - Android:在选项卡式应用程序的 fragment 中保留 ListView 内容的最佳方式?

Android透明DialogFragment

android - 单元测试 AndroidViewModel 类

android -> 任务 :app:checkDebugAarMetadata FAILED when run react-native run-android

android - 如何替换 BaseAdapter 中的 fragment ?

java - 在两个以上的 fragment 之间传递数据

Android Dialog Fragment 不会关闭

android:如何检查是否显示对话框 fragment