Como faço para capturar mudanças de uma caixa de seleção no desenvolvimento do Android?

StackOverflow https://stackoverflow.com/questions/4260841

Pergunta

Estou tentando aprender a fazer papéis de parede ao vivo para o Android. Eu tenho funcionado e agora quero adicionar algumas preferências. Então, eu criei uma atividade de preferência e segui todos os exemplos que pude encontrar.

Eu posso capturar muito bem o ListBoxPreferences, mas o método 'OnSharedPreferenceChanged' nunca é chamado quando uma caixa de seleção foi alterada.

Existe um código extra que deve ser adicionado para capturar alterações na caixa de seleção? Existe uma maneira de práticas recomendadas de fazer caixas de seleção em preferências?

Estou batendo a cabeça contra esse problema há dois dias, qualquer ajuda seria muito apreciada!

Obrigado!

Foi útil?

Solução

@Josh - boa resposta.

Gostaria de acrescentar por uma questão de completude é que você deve configurar as coisas para se registrar para alterações no método OnResume () da PreferenceActivity e não registrar no método onPause ().

A resposta para essa questão Possui uma boa amostra de código retirado nos programas de exemplo do Android.

Como alternativa, você também pode registrar os ouvintes para cada uma das preferências no OnCreate () da sua atividade e lidar com eventos separadamente.

Outras dicas

Você se registrou para receber retornos de chamada em sharedPreferenceChanged?

Adicione isso ao método OnCreate da sua atividade principal (e certifique -se de implementar o OnsharedPreferenceCechanged):

PreferenceManager.getDefaultSharedPreferences(getBaseContext()).registerOnSharedPreferenceChangeListener(this);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top