Passando extras e rotação de tela
Esse tipo de pergunta aparece periodicamente. Desculpe se isso foi coberto antes, mas eu sou um novato e não consegui encontrar a resposta apropriada. Ele lida com a implementação correta da comunicação entre classes e atividades.
Eu fiz um aplicativo de galeria. Tem 3 atividades principais: oMain
um, para procurar nomes de arquivos usando um padrão; umaThumb
um, que mostra todas as imagens que combinam com o padrão como miniaturas em um gridview, e umPhoto
atividade, que abre uma imagem de tamanho completo quando você clica em um polegar emThumbs
. Eu passo para oPhoto
atividade através de umIntent
os nomes de arquivos (uma matriz) eposition
(aint
) do polegar clicado na grade.
Este terceiroPhoto
atividade tem apenas uma visão:TouchImageView
, que adaptei para troca / zoom anterior / seguinte de acordo com o local onde você clicou na imagem (esquerda, direita ou meio). Além disso, eu adicionei um ouvinte longclick paraPhoto
para mostrar informações EXIF.
A coisa está funcionando, mas não estou feliz com a implementação ... Algumas coisas não estão certas.
Um dos problemas que estou enfrentando é que, se eu clicar na direita da imagem para ver o próximo noPhoto
atividade, ele muda bemposition++
), mas ao girar o dispositivo, o originalposition
aparece.
O que está acontecendo é quePhoto
é destruído ao girar a imagem e, por algum motivo, é reiniciado novamente, sem obedecersuper.onCreate(savedInstanceState)
, carregando novamente os extras (oposition
só mudou emPhoto
, não nas atividades dos pais).
Eu tentei comstartActivityForResult
ao invés destartActivity
, mas falhou...
Claro que eu posso fazer algo inventado para salvar oposition
dados, mas deve haver algo "conceitual" que eu não esteja entendendo sobre como as atividades funcionam, e quero fazer isso direito.
Alguém por favor pode me explicar o que estou fazendo de errado, qual é o melhor método para implementar o que eu quero e por quê?
Muito obrigado!!!