Domanda

In una classe di utilità Android, voglio ottenere un valore di preferenza di sistema in una classe, ma non ho il contesto lì, perché anche la classe che lo chiama non ha il contesto. Ho scoperto che per Resources è possibile utilizzare la funzione statica Resources.getSystem () . Esiste un modo simile per ottenere le preferenze di sistema senza contesto?

La mia classe non è un'attività né un servizio. È una classe di utilità. Potrebbe fornire ulteriori informazioni se necessario.

È stato utile?

Soluzione

Devi inviarlo a un contesto, non cercare di scappare dalle tue responsabilità. :) La tua classe di utilità deve essere chiamata da un'attività o un servizio ad un certo livello e dovrai passare quel contesto fino in fondo, attraverso ogni chiamata di metodo. So che è fastidioso, ho dovuto fare cose simili da solo. Considera un incentivo per mantenere semplice il tuo codice e richiedere il minor numero di chiamate di metodo possibili per ottenere qualcosa.

Altri suggerimenti

Uso il seguente Hack: http://www.hasemanonmobile.com/2009/10/05/quick-and-very-dirty-android-development-trick/

In sostanza, nascondi un puntatore di contesto come variabile statica all'interno della tua attività. Consiglierei questo brutto trucco solo se hai una scadenza molto ravvicinata.

Inoltre, se stai scrivendo una classe di utilità, probabilmente dovresti richiedere (come molte utility Android richiedono) che l'applicazione chiamante ti fornisca un contesto come parte del tuo costruttore.

Puoi creare un contesto:

Context myContext = createPackageContext("com.example", 0);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top