Pregunta

He implementado Galleryview en una pantalla llamada display_image.xml en la que he mostrado varias imágenes disponibles en la tarjeta SD ahora, cuando el usuario selecciona la imagen y presiona el botón Guardar imagen en la misma pantalla display_image.xml, la imagen seleccionada debe cambiarse en su foto de perfil en otra pantalla.

Mi pregunta es: ¿cómo podría obtener esa imagen de una pantalla para cambiar la imagen del usuario en otra pantalla y esa imagen seleccionada también debería insertarse en la base de datos para recuperarla más tarde cuando el usuario inicie sesión más tarde?Déjame decirte que mi imagen no proviene de ningún servicio web.

Por favor, ayúdame.........Agradeciéndote.........

¿Fue útil?

Solución 3

Lo primero que debe hacer es declarar una intención

Intent i_cp = new Intent(this,ImagePicker.class);

y use startActivityForResult(i_cp, 111); que buscará algún resultado. en nuestro caso para la posición de la imagen; un valor entero.

especificando request_code (111) que se usará para identificar el resultado cuando lo devuelva la intención iniciada. Aquí no usaremos setAction(i_cp.ACTION_PICK); y setType("image/*"); porque no vamos a devolver la imagen, solo devolveremos la posición de la imagen. Nuestro uso de Intent se limitará a pasar y recuperar el valor entero (posición del valor).

Ahora, ¿qué tal si obtenemos esa posición de imagen que el usuario ha seleccionado? la posición se obtiene en el método onItemClick de GalleryView mediante uno de los parámetros

public void onItemClick(AdapterView parent, View v, int position,long rid)

ahora declare una variable como int pos; y asigne -1 para identificar si la imagen está seleccionada o no y si la imagen está seleccionada, en el evento onclick del botón saveimage pasar la posición del valor como

retIntent.putExtra("SelectedImage", pos);

y en onActivityForResult identifica la intención mediante el código de solicitud pasado y extrae esa posición como

int pos = data.getExtras().getInt("SelectedImage");

y configúrelo como

usr_im.setImageResource(ImagePicker.pics[pos]);

y este conjunto de imágenes [] que contiene todos los identificadores de imágenes almacenadas en una de las carpetas res/drawable de su aplicación, declare como

public static Integer[] pics={values};

De lo contrario, no podrá configurar la imagen.

Otros consejos

Puede hacer esto de dos maneras: 1) Pase la ruta de la tarjeta SD de la imagen seleccionada y cargue directamente esa imagen desde la ruta en imageview. 2) puede convertir la imagen en byes [] y pasar bytes [] y recuperar la imagen.

Espero que me entiendas. Mucha suerte

Usar "actividadParaResultado".
El concepto es iniciar la actividad de elección de imagen llamando

startActivityForResult(INTENT_OF_YOUR_IMAGECHOOSING_ACTIVITY);

Ahora, en esta actividad, cuando el usuario hace clic en cualquiera de las imágenes, maneja ese evento de la siguiente manera:
alguno OnClick(){<br>Intent resultIntent = new Intent();en esta intención, establezca la matriz de bytes de su imagen en extras O la ruta de la tarjeta SD de su imagen

luego llame setResult(RESULT_OK, resultIntent);


Esto devolverá la llamada a la actividad anterior en el método. onActivityResult(int resultCode, ..., Intent data) AQUÍ utilice los datos con la intención de obtener la información que necesita

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top