getResources ().getColor () jest przestarzałe [duplikat]

To pytanie ma już odpowiedź tutaj:

  • Nie jest to jednak żaden problem, ponieważ nie jest on w pełni funkcjonalny.]} 17 odpowiedzi

Za pomocą: buildToolsVersion "22.0.1" , W moim pliku gradle.

Odkryłem, że użyteczne {[2] } jest przestarzałe.

Czego powinienem użyć zamiast tego?

Author: David, 2015-08-06

4 answers

Wygląda na to, że najlepszym podejściem jest użycie:

ContextCompat.getColor(context, R.color.color_name)

Wybierze odpowiednio metodę Marshmallow z dwoma parametrami lub metodę pre-Marshmallow.

 678
Author: Barry Irvine,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-25 11:00:03

Cóż, jest przestarzały w Androidzie m, więc musisz zrobić wyjątek dla Androida m i niższych. Wystarczy dodać aktualny temat w funkcji getColor. Aktualny temat możesz pobrać za pomocą getTheme().

To załatwi sprawę w fragmencie, możesz zastąpić getActivity()getBaseContext(), yourContext, etc, które przechowują Twój aktualny kontekst

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));
}

*p. s : kolor jest przestarzały w M, ale drawable jest przestarzały w L

 31
Author: yfsx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-05 18:04:04

Musisz użyć ContextCompat.getColor (), która jest częścią biblioteki Support V4 (więc będzie działać dla wszystkich poprzednich API).

ContextCompat.getColor(context, R.color.my_color)

Jak określono w dokumentacji, "począwszy od M, zwracany kolor będzie stylizowany dla określonego motywu kontekstu". Więc nie musisz się o to martwić.

Możesz dodać bibliotekę Support V4, dodając następujące elementy do tablicy zależności wewnątrz kompilacji aplikacji."gradle": {]}

compile 'com.android.support:support-v4:23.0.1'
 23
Author: Maheshwar Ligade,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-11 07:53:02

Znalazłem, że przydatne getResources ().getColor (R. color.color_name) jest przestarzały.

Nie jest przestarzały w API na poziomie 21, zgodnie z dokumentacją.

To jest przestarzałe w M Developer Preview. Jednak metoda zastępcza (dwuetapowy getColor(), który pobiera identyfikator zasobu koloru i obiekt Resources.Theme) jest dostępna tylko w M Developer Preview.

Stąd teraz kontynuuj używanie metody single-parameter getColor(). Jeszcze w tym roku rozważ użycie metody dwu-parametrowej getColor() na urządzeniach z Androidem M, wracając do przestarzałej metody jednoparametrowej getColor() Na starszych urządzeniach.

 20
Author: CommonsWare,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-05 21:21:42