android - 未使用 RecyclerView.Adapter 内的 onActivityResult

标签 android android-studio

我在 Adapter 中有一个按钮可以进入图库:

    MyAdapter extends
            RecyclerView.Adapter<RecyclerView.ViewHolder> {
    ...
    onClic..{
        Intent intent = new Intent(
                                    Intent.ACTION_PICK,
                                    android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                            intent.setType("image/*");
                            ((Activity) context).startActivityForResult(
                                    Intent.createChooser(intent, "Select File"),
                                    SELECT_FILE);}
    ....
 @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK) {
        }
    }
..
    }

我想做的是用从图库中选择的图像更新 ImageView,但为了做到这一点,我必须使用 onActivityResult 并且编译器提示 从未使用方法 onActivityResult无法解析 onActivityResult 方法

我该怎么做?

最佳答案

请注意,在这一行中,您正在使用 Activity 调用 startActivityForResult:

((Activity) context).startActivityForResult();

onActivityResult(...) 是一个回调方法,应该在您用来调用 startActivityForResult() 的同一个 Activity 中。

您收到编译器错误,因为没有这样的方法可以覆盖 RecyclerView.Adapter 的名为 onActivityResult(...)

编辑:

既然您问过如何正确地做到这一点,那么这里是一种选择。

将以下接口(interface)添加到MyAdapter:

public interface OnClickImageListener{
    void onClick();
}

然后让您的对话框实现该接口(interface)。在 onClick 方法中执行:

@Override
public void onClick() {
    Intent intent = new Intent(Intent.ACTION_PICK,
            android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
    intent.setType("image/*");
    startActivityForResult(
           Intent.createChooser(intent, "Select File"), SELECT_FILE);
}

您可以将 onActivityResult(...) 方法添加到您的 Fragment 中,现在将调用它。

要在创建 MyAdapter 时使用它,将 Fragment 作为参数传递给构造函数并将其作为 OnClickImageListener 引用,这样您的点击适配器中的监听器简单地变为:

imageClickListener.onClick();

另请注意,您可以将索引添加到 onClick() 方法或您需要知道的任何其他内容,以便在图像返回后使用适配器中的哪个项目填充图像。

关于android - 未使用 RecyclerView.Adapter 内的 onActivityResult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35243560/

相关文章:

android - 如何从我自己的 Android 应用程序调用内置相机应用程序?

android - 在 Android Studio 中共享模块之间的外部依赖

javascript - 如何从第二个 Web View 访问我的应用程序的 ionic 存储 (localForage)?

javascript - -webkit-tap-highlight-color 不适用于区域标签

java - R.id 无法解析

javascript - API 17 : Action Bar implemented but not appear - Android Studio

java - ''intent.getExtras().getString' ' 重新打开时应用程序崩溃

java - gRPC protobuf 未使用 kotlin 构建进行编译 (Android Studio 3.0)

android - Flutter IntelliJ 插件中没有控制台输出?

android - 卸载应用程序时 KeyStore 条目是否丢失?