Mejor enfoque
Como @sat responde, un buen enfoque para obtener color es
ResourcesCompat.getColor(getResources(), R.color.your_color, null);
o use a continuación cuando no tenga acceso al getResources()
método.
Context context = getContext(); // like Dialog class
ResourcesCompat.getColor(context.getResources(), R.color.your_color, null);
Lo que hago es
public void someMethod(){
...
ResourcesCompat.getColor(App.getRes(), R.color.your_color, null);
}
¡Es más fácil de usar en cualquier lugar de su aplicación! Incluso en la clase Util o en cualquier clase donde no tenga Context o getResource ()
Problema (cuando no tienes contexto)
Cuando no tiene Context
acceso , como un método en suUtil
clase.
Asuma el siguiente método sin contexto.
public void someMethod(){
...
// can't use getResource() without Context.
}
Ahora pasará Context
como parámetro en este método y usarágetResources().
public void someMethod(Context context){
...
context.getResources...
}
Así que aquí hay una solución única de bonificación mediante la cual puede acceder a recursos desde cualquier lugar Util class
. Agregue Resources
a su Application
clase o cree uno si no existe.
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;
}
}
Agregue un campo de nombre a su manifest.xml
<application
etiqueta. (Si no se ha agregado ya)
<application
android:name=".App"
...
>
...
</application>
Ahora estás listo para irte. Usar ResourcesCompat.getColor(App.getRes(), R.color.your_color, null);
en cualquier lugar de la aplicación.
android.R.color.some_color
ejemplo:getResources().getColor(android.R.color.holo_blue_bright)
(al menos, en API 17)ContextCompat
yResourcesCompat
? Si no hay una diferencia práctica, sería menos confuso si eliminara uno de ellos de su respuesta.