Beste Annäherung
Wie @sat antwortet, ist ein guter Ansatz, um Farbe zu erhalten
ResourcesCompat.getColor(getResources(), R.color.your_color, null);
oder verwenden Sie den unteren Weg, wenn Sie keinen Zugang zu getResources()
Methode.
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 sehr einfach, es überall in Ihrer App zu verwenden! Sogar in der Util-Klasse oder einer anderen Klasse, in der Sie weder Context noch getResource() haben.
Problem (Wenn Sie keinen Kontext haben)
いつ Sie haben keine Context
Zugang wie eine Methode in Ihrem Util
clase.
Nehmen Sie die folgende Methode ohne Kontext an.
public void someMethod(){
...
// can't use getResource() without Context.
}
Jetzt werden Sie passieren Context
als Parameter in dieser Methode und verwenden getResources().
public void someMethod(Context context){
...
context.getResources...
}
Hier ist also ein Bonus einzigartige Lösung mit dem Sie von überall aus auf Ressourcen zugreifen können, wie Util class
. hinzufügen Resources
zu Ihrem Application
Klasse 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 ein Namensfeld zu Ihrem manifest.xml
<application
Tag. (Falls nicht bereits hinzugefügt)
<application
android:name=".App"
...
>
...
</application>
Jetzt sind Sie startklar. Verwenden Sie ResourcesCompat.getColor(App.getRes(), R.color.your_color, null);
überall in der App.