Pergunta

Implementei o galleryview em uma tela chamada display_image.xml, na qual mostrei várias imagens disponíveis no sdcard agora que o usuário seleciona a imagem e pressiona o botão Salvar imagem na mesma tela display_image.xml e a imagem selecionada deve ser alterada em sua / delafoto do perfil em outra tela.

Minha dúvida é como eu seria capaz de obter aquela imagem de uma tela para mudar a imagem do usuário em outra tela e essa imagem selecionada também deve ser inserida no banco de dados para recuperação posterior quando o usuário efetuar login posteriormente.Deixe-me dizer que minha imagem não vem de nenhum serviço da web.

Por favor me ajude ......... Agradecendo .........

Foi útil?

Solução 3

A primeira coisa que você precisa fazer é declarar um intent

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

e use startActivityForResult(i_cp, 111); que procurará algum resultado. no nosso caso para posição de imagem; um valor inteiro.

especificando request_code (111) que será usado para identificar o resultado quando retornado pelo intent iniciado. Aqui não usaremos setAction(i_cp.ACTION_PICK); e setType("image/*"); porque não vamos retornar a imagem, apenas retornaremos a posição da imagem. Nosso uso de Intent será limitado a apenas passar e recuperar o valor inteiro (posição do valor).

Agora, que tal obter a posição da imagem que o usuário selecionou. a posição é obtida no método onItemClick de GalleryView por um dos parâmetros

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

agora declara uma variável como int pos; e atribua -1 para identificar se a imagem está selecionada ou não e se a imagem é selecionada então no evento onclick do botão salvar imagem passar a posição do valor como

retIntent.putExtra("SelectedImage", pos);

e em onActivityForResult identificam o intent pelo código de solicitação passado e extraem essa posição como

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

e defina-o como

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

e esta matriz de fotos [] que contém todos os ids de imagens armazenados em uma das pastas res/drawable do seu aplicativo, declare-o como

public static Integer[] pics={values};

Caso contrário, você não conseguirá definir a imagem.

Outras dicas

Você pode fazer isso de duas maneiras: 1) Passe o caminho do cartão SD da imagem selecionada e carregue essa imagem diretamente do caminho na visualização de imagens. 2) você pode converter a imagem em bytes [] e passar bytes [] e recuperar a imagem.

Espero que você me entenda. Boa sorte

Use " activityForResult ".
O conceito é iniciar sua atividade de escolha de imagem chamando

startActivityForResult(INTENT_OF_YOUR_IMAGECHOOSING_ACTIVITY);

Agora, nesta atividade, quando o usuário clica em qualquer uma das imagens, trata o evento da seguinte maneira:
algum OnClick(){<br>Intent resultIntent = new Intent(); neste intent defina a matriz de bytes da sua imagem em extras OU o caminho do cartão SD da sua imagem

em seguida, chame setResult(RESULT_OK, resultIntent);


Isso retornará a chamada da atividade anterior no método onActivityResult(int resultCode, ..., Intent data) AQUI use os dados como a intenção de buscar as informações de que você precisa

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top