我在适配器内有一个按钮进入图库:
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并且编译器正在抱怨method onActivityResult is never used
和cannot resolve method onActivityResult
。
我该如何解决这个问题?
答案 0 :(得分:10)
请注意,此行您使用Activity
来致电startActivityForResult
:
((Activity) context).startActivityForResult();
onActivityResult(...)
是一种回调方法,应该与您用来调用Activity
的{{1}}相同。
您收到编译器错误,因为没有此方法可以覆盖startActivityForResult()
的名为onActivityResult(...)
。
编辑:
既然你问过如何正确地做到这一点,这里有一个选择。
将以下界面添加到RecyclerView.Adapter
:
MyAdapter
然后让对话框实现该接口。在public interface OnClickImageListener{
void onClick();
}
方法中执行:
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();
方法或其他任何需要知道的地方添加索引,以便知道适配器中的哪个项目在返回后填充图像。