onActivityResult dentro de un RecyclerView.Adapter no se está utilizando
Tengo un botón dentro de un adaptador que entra en la galería:
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) { } } .. }
Lo que estoy tratando de hacer es actualizar un ImageView con la imagen seleccionada de la galería, pero para hacer eso tengo que usar onActivityResult y el compilador está quejando method onActivityResult is never used
y cannot resolve method onActivityResult
.
- Android Studio no puede autenticarse con SVN
- Cómo importar un proyecto existente de github en Android Studio
- Adición de Tesseract y Opencv a Android.mk (Android Studio)
- Fragment_main y activity_main en Android Studio
- Adb y Android Studio no detectan YUPHORIA
¿Cómo puedo hacer esto?
- Android studio No se puede resolver el símbolo 'HttpClient'
- Cómo importar la dependencia de Maven en Android Studio / IntelliJ?
- El paquete no existe cuando se utiliza una aplicación independiente como dependencia
- HttpClient no funciona en mi estudio de Android 1.4
- Plugin con id 'com.android.library' no encontrado
- ¿Cómo puedo agregar métodos que utilizo a menudo para Android Studio?
- Uso de la versión 1.0.0-alpha7 de la biblioteca de restricciones, que es obsoleta
- ¿Por qué no se ejecuta correctamente mi pom cuando se utiliza Android Studio / IntelliJ?
Nota sobre esta línea está utilizando una Activity
para llamar a startActivityForResult
:
((Activity) context).startActivityForResult();
onActivityResult(...)
es un método de devolución de llamada y debe estar en la misma Activity
que se utiliza para llamar a startActivityForResult()
.
Usted está recibiendo el error del compilador porque no hay tal método para anular el nombre onActivityResult(...)
para RecyclerView.Adapter
.
EDITAR:
Puesto que usted preguntó cómo usted puede hacer esto correctamente aquí es una opción.
Agregue la siguiente interfaz a MyAdapter
:
public interface OnClickImageListener{ void onClick(); }
Luego, haga que su diálogo implemente esa interfaz. En el método 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); }
Puede agregar el onActivityResult(...)
a su Fragment
y ahora se llamará.
Para usar esto cuando crea MyAdapter
pasar el Fragment
en como un argumento para el constructor y hacer referencia a él como OnClickImageListener
para que su oyente de clics en el adaptador simplemente se convierte en:
imageClickListener.onClick();
También tenga en cuenta que puede agregar un índice al método onClick()
o cualquier otra cosa que necesite para saber qué elemento del adaptador debe rellenar la imagen una vez que se devuelve.