我在 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/