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 Context
Zugriff haben , wie eine Methode in Ihrer Util
Klasse.
Nehmen Sie die folgende Methode ohne Kontext an.
public void someMethod(){
...
// can't use getResource() without Context.
}
Jetzt werden Sie Context
als 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 Resources
Ihrer Application
Klasse 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
<application
Tag 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.