No meu aplicativo eu tenho TextView
e EditText
. Ambos contêm dados. Quando a orientação da tela muda, os dados EditText
permanecem, mas os TextView
dados são apagados.
Alguém pode me ajudar a encontrar uma maneira de reter dados TextView
também?
Para reter dados sobre a mudança de orientação, você precisa implementar os dois métodos:
fonte
1) Nem todas as visualizações com um ID salvam seu estado. Widgets Android, com um ID, cujo estado pode ser alterado pelo usuário, parecem salvar seu estado em um soft kill. Portanto, EditText salva seu estado, mas TextView não salva seu estado em um soft kill.
"AFAIK, o Android só se preocupa em salvar o estado de coisas que devem mudar. É por isso que ele salva o texto em um EditText (que é provável que o usuário altere) e talvez não salve o estado de um TextView (que normalmente permanece estático ) "
Mark M
Portanto, você pode escolher salvar o estado da visualização de texto em onSaveInstanceState e pode escolher restaurar o estado da visualização de texto em onCreate.
2) A prática recomendada é salvar o estado "interno" da instância sem visualização, mesmo se você declarar
Dos documentos:
"No entanto, seu aplicativo deve ser sempre capaz de desligar e reiniciar com seu estado anterior intacto. Não apenas porque há outras alterações de configuração que você não pode impedir de reiniciar seu aplicativo, mas também para lidar com eventos como quando o usuário recebe uma mensagem chamada telefônica e depois retorna ao seu aplicativo. "
JAL
fonte
O Android não cuida desse tipo de coisa para você. Você salvou todos os dados manualmente.
Você pode usar em uma atividade para salvar valores
e usar algo assim no método oncreate de uma atividade para carregar os objetos salvos
você também pode escolher desativar a mudança de orientação para uma atividade
fonte
Modifique suas atividades em AndroidManifest.xml para substituir o comportamento de mudança de orientação, adicionando isto às suas atividades / atividades:
Deve ser parecido com isto:
fonte
Adicione-os a AndroidManifest.xml.
Coloque o nome da atividade no lugar de Activity_Name
Isso funcionará com a alteração de valor de TextField também.
fonte
apenas adicione
à sua atividade em AndroidManifest.xml.
fonte
Quando a configuração muda, o Android reinicia sua atividade por padrão. Para mudar isso, você deve substituir o
onConfigurationChanged()
método. Além disso, você deve adicionarandroid:configChanges
ao seu arquivo de manifesto.Você pode ler mais aqui .
fonte
Eu também usei
e não funcionou.
Mas então encontrei uma solução.
Verifique se você tem a seguinte linha corretamente em seu maniest:
certifique-se de que não leia algo como
Eu usei a segunda maneira em primeiro lugar, mas quando corrigi o estado foi preservado.
fonte