Com a nova API do Android 22, getResources().getDrawable()
agora está obsoleta. Agora, a melhor abordagem é usar apenas getDrawable()
.
O que mudou?
Com a nova API do Android 22, getResources().getDrawable()
agora está obsoleta. Agora, a melhor abordagem é usar apenas getDrawable()
.
O que mudou?
getDrawable (int id)
da classeResources
foi descontinuado. Agora você deve usar o métodogetDrawable (int id, Resources.Theme theme)
com o novo parâmetro de tema.Resources#getDrawable(int)
eResources#getColor(int)
foram obsoleto.Respostas:
Você tem algumas opções para lidar com essa depreciação da maneira certa (e à prova de futuro ), dependendo do tipo de drawable que você está carregando:
A) desenháveis com atributos de tema
Você obterá um Drawable com estilo conforme instruído pelo tema Atividade. Provavelmente é isso que você precisa.
B) desenháveis sem atributos de tema
Você terá seu drawable sem estilo da maneira antiga. Observe: não
ResourcesCompat.getDrawable()
está obsoleto!EXTRA) desenháveis com atributos de tema de outro tema
fonte
Editar: veja meu blog sobre o assunto para uma explicação mais completa
Você deve usar o seguinte código da biblioteca de suporte:
Usar este método é equivalente a chamar:
A partir da API 21, você deve usar o
getDrawable(int, Theme)
método em vez degetDrawable(int)
, pois permite buscar um objeto extraível associado a um ID de recurso específico para a densidade / tema da tela. Chamar ogetDrawable(int)
método descontinuado é equivalente a chamargetDrawable(int, null)
.fonte
getDrawable (int id)
método daContext
classe. É o mesmo quegetResources().getDrawable(id, getTheme());
e também usa a nova API.getDrawable(int, Resources.Theme)
.Substitua esta linha:
getResources().getDrawable(R.drawable.your_drawable)
com
ResourcesCompat.getDrawable(getResources(), R.drawable.your_drawable, null)
EDITAR
ResourcesCompat
também está obsoleto agora. Mas você pode usar isso:ContextCompat.getDrawable(this, R.drawable.your_drawable)
(Aquithis
está o contexto)para mais detalhes, siga este link: ContextCompat
fonte
ResourcesCompat
está obsoleto. Deve funcionar bem.getResources().getDrawable()
foi descontinuado no nível 22 da API. Agora, devemos adicionar o tema:getDrawable (identificação int, tema Resources.Theme) (adicionado no nível 21 da API)
Isto é um exemplo:
Este é um exemplo de como validar para versões posteriores:
fonte
Build.VERSION_CODES.LOLLIPOP is API 21
, então não deveria serif (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1)
ouif (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP)
? Deixa pra lá. From below "O método foi adicionado na API 21, mas não foi preterido até a API 22. :)"Você pode usar
isso é trabalho para mim
fonte
Apenas um exemplo de como corrigi o problema em uma matriz para carregar um listView, espero que ajude.
fonte
Tente o seguinte:
fonte
Se você estiver segmentando SDK> 21 (pirulito ou 5.0), use
Veja documentos
fonte
getDrawable (int drawable) foi descontinuado no nível 22 da API. Para obter referência, consulte este link .
Agora, para resolver esse problema, temos que passar um novo construtor junto com o id como: -
Para soluções Faça o seguinte: -
Em Java: -
ou
Em Kotlin: -
ou
Espero que isso ajude você.
fonte
en api nível 14
fonte
Agora você precisa implementar assim
Seguir uma única linha de código é suficiente, tudo será tratado por ContextCompat.getDrawable
fonte
Para alguns que ainda resolveram esse problema, mesmo depois de aplicar a sugestão desse segmento (eu costumava ser um desses), adicione esta linha na classe Application, no método onCreate ()
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true)
Conforme sugerido aqui e aqui, às vezes isso é necessário para acessar vetores de recursos, especialmente quando você está lidando com itens de menu, etc.
fonte
No Kotlin você pode usar a extensão
então use como
fonte
Agora Build.VERSION_CODES.LOLLIPOP deve ser alterado para BuildVersionCodes.Lollipop, ou seja:
fonte
BuildVersionCodes
uma classe específica para o Xamarin?