Pergunta

Em uma aula de utilidade Android, quero obter um valor de preferência do sistema em uma classe, mas não tenho o contexto lá, porque a classe que chama que ela também não tem o contexto. Eu descobri que, para recursos, pode -se usar a estática Resources.getSystem() função. Existe alguma maneira semelhante de obter preferências do sistema sem contexto?

Minha aula não é uma atividade nem serviço. É uma aula de utilidade. Poderia fornecer mais informações, se necessário.

Foi útil?

Solução

Você precisa enviar um contexto - não tente fugir de suas responsabilidades. :) Sua classe de utilidade deve ser chamada por uma atividade ou serviço em algum nível, e você terá esse contexto até a linha, através de todas as chamadas de método. Eu sei que é irritante, eu mesmo tive que fazer coisas semelhantes. Considere um incentivo para manter seu código simples e exigir as poucas chamadas de método possíveis para realizar algo.

Outras dicas

Eu uso o seguinte hack: http://www.hasemanonmobile.com/2009/10/05/quick-and-very-dirty-android-development-trick/

Essencialmente, você esconde um ponteiro de contexto como uma variável estática dentro de sua atividade. Eu recomendaria esse hack feio se você estiver em um prazo apertado.

Além disso, se você estiver escrevendo uma aula de utilidade, provavelmente deve exigir (como muitos utilitários do Android exigem) que o aplicativo de chamada fornece um contexto como parte do seu construtor.

Você pode criar um contexto:

Context myContext = createPackageContext("com.example", 0);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top