Utilizzo: buildToolsVersion "22.0.1"
, targetSdkVersion 22
nel mio file gradle.getResources(). GetColor() è deprecato
Ho trovato che l'utile getResources().getColor(R.color.color_name)
è deprecato.
Cosa dovrei usare invece?
Utilizzo: buildToolsVersion "22.0.1"
, targetSdkVersion 22
nel mio file gradle.getResources(). GetColor() è deprecato
Ho trovato che l'utile getResources().getColor(R.color.color_name)
è deprecato.
Cosa dovrei usare invece?
Sembra che l'approccio migliore è quello di utilizzare:
ContextCompat.getColor(context, R.color.color_name)
Questa sceglierà il Marshmallow due metodo di parametro o il metodo-Marshmallow pre modo appropriato.
Ho trovato che l'utile getResources(). GetColor (R.color.color_name) è deprecato.
Non è obsoleto in livello API 21, in base allo the documentation.
E è deprecato nell'anteprima M Developer. Tuttavia, il metodo di sostituzione (un parametro getColor()
a due parametri che accetta l'ID della risorsa colore e un oggetto Resources.Theme
) è disponibile solo nell'anteprima M Developer.
Quindi, al momento, continuare a utilizzare il metodo a parametro singolo getColor()
. Entro la fine dell'anno, prendere in considerazione l'utilizzo del metodo a due parametri getColor()
su dispositivi Android M, tornando al deprecato metodo a parametro singolo getColor()
su dispositivi meno recenti.
È necessario utilizzare ContextCompat.getColor(), che fa parte della libreria di supporto V4 (quindi funzionerà per tutte le API precedenti).
ContextCompat.getColor(context, R.color.my_color)
Come specificato nella documentazione, "Avvio di M, il colore restituito sarà essere in stile per il tema del contesto specificato". Quindi non c'è bisogno di preoccuparsene.
È possibile aggiungere la libreria V4 supporto aggiungendo quanto segue alla matrice di dipendenze all'interno della vostra app build.gradle:
compile 'com.android.support:support-v4:23.0.1'
Beh, è stata abbandonata in M Android quindi è necessario fare un'eccezione per M Android e più basso. Basta aggiungere il tema attuale alla funzione getColor
. È possibile ottenere il tema corrente con getTheme()
.
Questo farà il trucco nel frammento, è possibile sostituire getActivity()
con getBaseContext()
, yourContext
, ecc, che tenere il contesto attuale
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
yourTitle.setTextColor(getActivity().getResources().getColor(android.R.color.white, getActivity().getTheme()));
}else {
yourTitle.setTextColor(getActivity().getResources().getColor(android.R.color.white));
}
* ps: il colore è deprecato in M, ma drawable è deprecato in L
Invece di 'getActivity(). getTheme()', userei 'getContext(). getTheme()' –
È molto utile. Funziona per me –
Dove lo vedi? http://developer.android.com/reference/android/content/res/Resources.html#getColor(int) –
Questo è stato discusso qui: http://stackoverflow.com/questions/31590714/getcolorint-id-deprecated -on-android-mnc-preview-2 – BrentM
Usa ContextCompat.getColor (context, R.color.color_name) –