Bester Ansatz
Als Antwort von @sat ist ein guter Ansatz, um Farbe zu erhalten
ResourcesCompat.getColor(getResources(), R.color.your_color, null);
oder verwenden Sie die folgende getResources()Methode , wenn Sie keinen Zugriff auf die Methode haben.
Context context = getContext(); // like Dialog class
ResourcesCompat.getColor(context.getResources(), R.color.your_color, null);
Was ich tue ist
public void someMethod(){
...
ResourcesCompat.getColor(App.getRes(), R.color.your_color, null);
}
Es ist am einfachsten überall in Ihrer App zu verwenden! Selbst in der Util-Klasse oder einer Klasse, in der Sie weder Context noch getResource () haben
Problem (wenn Sie keinen Kontext haben)
Wenn Sie keinen ContextZugriff haben , wie eine Methode in Ihrer UtilKlasse.
Nehmen Sie die folgende Methode ohne Kontext an.
public void someMethod(){
...
// can't use getResource() without Context.
}
Jetzt werden Sie Contextals Parameter in dieser Methode übergeben und verwendengetResources().
public void someMethod(Context context){
...
context.getResources...
}
Hier ist eine einzigartige Bonuslösung, mit der Sie von überall auf Ressourcen zugreifen können Util class. Fügen Sie ResourcesIhrer ApplicationKlasse hinzu oder erstellen Sie eine, wenn sie nicht vorhanden ist.
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;
}
}
Fügen Sie Ihrem manifest.xml <applicationTag ein Namensfeld hinzu. (Wenn nicht bereits hinzugefügt)
<application
android:name=".App"
...
>
...
</application>
Jetzt können Sie loslegen. Verwenden Sie ResourcesCompat.getColor(App.getRes(), R.color.your_color, null);überall in der App.