Bog*_*iel 4 android android-studio
我在适配器内有一个按钮进入图库:
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) {
}
}
..
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是使用从库中选择的图像更新ImageView,但为了做到这一点,我必须使用onActivityResult并且编译器正在抱怨method onActivityResult is never used和cannot resolve method onActivityResult.
我怎么能这样做?
Geo*_*gan 10
请注意这一行你要Activity用来打电话startActivityForResult:
((Activity) context).startActivityForResult();
Run Code Online (Sandbox Code Playgroud)
onActivityResult(...)是一个回调方法,应该与Activity您以前调用的方法相同startActivityForResult().
您收到编译器错误,因为没有这样的方法来覆盖named onActivityResult(...)for RecyclerView.Adapter.
编辑:
既然你问过如何正确地做到这一点,这里有一个选择.
将以下界面添加到MyAdapter:
public interface OnClickImageListener{
void onClick();
}
Run Code Online (Sandbox Code Playgroud)
然后让对话框实现该接口.在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);
}
Run Code Online (Sandbox Code Playgroud)
您可以将onActivityResult(...)方法添加到您的方法,Fragment现在将调用它.
要在创建使用此MyAdapter传递Fragment中作为参数传递给构造函数,并引用它作为一个OnClickImageListener这样的适配器点击监听器简单地变为:
imageClickListener.onClick();
Run Code Online (Sandbox Code Playgroud)
另请注意,您可以在onClick()方法中添加索引或其他任何需要知道的内容,以便在返回后使用适配器中的哪个项目填充图像.
| 归档时间: |
|
| 查看次数: |
8967 次 |
| 最近记录: |