Como passar a imagem de uma tela para outra?
-
27-10-2019 - |
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 .........
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