Pergunta

Eu tenho uma atividade de preferências em que posso alterar o idioma e o tema do meu aplicativo. A partir daí, volto para a atividade anterior através da chave traseira e quero recriar a atividade.

Eu consegui fazer isso reinicializando o layout em onResume e também chamando onRestoreInstanceState de lá. Todas as visualizações são restauradas corretamente, com caixas de seleção verificadas, se necessário, o EdittExts preenchidos com textos que deixei lá anteriormente.

Mas também tenho um botão que está inicialmente desativado e fica ativado apenas quando um radiobutton é verificado. O problema é o seguinte: verifico o radiobutton, o botão fica ativado. Depois vou para as configurações, mudo o tema lá e retorno à primeira atividade. Quando chego lá, o radiobutton é restaurado conforme verificado, mas o botão está desativado.

Portanto, parece que o estado habilitado/desativado não está sendo salvo no pacote, o que parece contra -intuitivo. E não encontrei nenhum código na fonte do Android que faça isso também. Estou perdendo alguma coisa, ou tenho que escrever meu próprio código para isso?

EDIT: BTW, o estado é salvo apenas para as visualizações que têm IDs. E esse botão tem um, eu garanto que :)

Foi útil?

Solução

A chave aqui é ver o que está realmente ativando o botão e garantir que isso seja consistente em todo acesso ao aplicativo.

Da sua declaração:

Mas também tenho um botão que está inicialmente desativado e fica ativado apenas quando um radiobutton é verificado.

Parece que você tem um ouvinte no radiobutton que permite o botão. A partir disso, concluo que o botão está inicialmente desativado, o que significa que você precisará alterar isso toda vez que executa a atividade.

Suas opções são as seguintes:

  • Faça com que o Radiobutton defina algum tipo de preferência global que é verificada no resumo, permitindo o botão, se necessário
  • Quando o radiobutton for verificado, altere as configurações globais (ou talvez as configurações da GUI) para uma em que o botão está ativado. Isso pode ficar para sempre até que o radiobutton esteja desmarcado novamente.
  • Salvar a habilitação em OnsaveInstancestate como você mencionar

É difícil dizer o que é mais apropriado porque você não mencionou o contexto do caso de uso, mas eu evitaria enviá -lo no pacote, a menos que seja uma atividade muito ocasionalmente usada. Faz muito sentido acompanhar a configuração do Radiobutton, armazenando -a ou alterando a visualização até o aviso prévio.

Outras dicas

A maneira mais fácil é ativar o botão em vez de se o radiobutton estiver verificado.

Editar: PreferenceGroup pode lidar Preferencatividade.

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