Meilleure approche
Comme réponse @sat, une bonne approche pour obtenir des couleurs est
ResourcesCompat.getColor(getResources(), R.color.your_color, null);
ou utilisez ci-dessous lorsque vous n'avez pas accès à la getResources()
méthode.
Context context = getContext(); // like Dialog class
ResourcesCompat.getColor(context.getResources(), R.color.your_color, null);
Ce que je fais c'est
public void someMethod(){
...
ResourcesCompat.getColor(App.getRes(), R.color.your_color, null);
}
Il est plus simple à utiliser n'importe où dans votre application! Même dans la classe Util ou dans toute classe où vous n'avez pas Context ou getResource ()
Problème (lorsque vous n'avez pas de contexte)
Lorsque vous n'y avez pas Context
accès , comme une méthode dans votre Util
classe.
Supposons la méthode ci-dessous sans contexte.
public void someMethod(){
...
// can't use getResource() without Context.
}
Vous allez maintenant passer Context
comme paramètre dans cette méthode et utilisergetResources().
public void someMethod(Context context){
...
context.getResources...
}
Voici donc une solution unique en bonus grâce à laquelle vous pouvez accéder à des ressources de n'importe où Util class
. Ajoutez Resources
à votre Application
classe ou créez-en un s'il n'existe pas.
import android.app.Application;
import android.content.res.Resources;
public class App extends Application {
private static App mInstance;
private static Resources res;
@Override
public void onCreate() {
super.onCreate();
mInstance = this;
res = getResources();
}
public static App getInstance() {
return mInstance;
}
public static Resources getResourses() {
return res;
}
}
Ajoutez un champ de nom à votre manifest.xml
<application
balise. (Si pas déjà ajouté)
<application
android:name=".App"
...
>
...
</application>
Vous êtes maintenant prêt à partir. Utilisez ResourcesCompat.getColor(App.getRes(), R.color.your_color, null);
n'importe où dans l'application.