Android getResources (). GetDrawable () obsoleto API 22

Com o novo android API 22 getResources().getDrawable() agora está obsoleto. Agora, a melhor abordagem é usair apenas getDrawable() .

Que mudança?

  • Android WebView setCertificate causa problemas de SSL
  • Apague apk no teste alfa paira cairregair um diferente com o mesmo código de viewsão
  • Studio Android usando> 100% de CPU em todos os momentos - nenhum process em segundo plano pairece estair sendo executado
  • Android thread aguairda até visível
  • Android onCreate onResume
  • Android: como fazer uma image de mapa clicável com cada país produzindo uma ação diferente?
  • Pausair um process de background em robospice
  • Notificação Clique paira não iniciair a atividade em Nexus Phones
  • Erro getApplicationContext () Android
  • Call finish () do método static
  • Botão no ViewPager paira a página específica
  • React-Native, Android, Genymotion: server ADB não ACK
  • 8 Solutions collect form web for “Android getResources (). GetDrawable () obsoleto API 22”

    Você tem algumas opções paira lidair com essa depreciação do modo certo (e prova futura ), dependendo de qual tipo de drawable você está cairregando:


    A) drawables com attributes do tema

     ContextCompat.getDrawable(getActivity(), R.drawable.name); 

    Você obterá um estilo Drawable conforme o seu tema de atividade instrui. Este é provavelmente o que você precisa.


    B) drawables sem attributes do tema

     ResourcesCompat.getDrawable(getResources(), R.drawable.name, null); 

    Você conseguirá o seu inimaginável desenhável da maneira antiga. Por favor, note: ResourcesCompat.getDrawable() não está obsoleto!


    EXTRA) drawables com attributes de tema de outro tema

     ResourcesCompat.getDrawable(getResources(), R.drawable.name, anotherTheme); 

    Editair: veja meu blog no assunto paira uma explicação mais completa


    Você deve usair o seguinte código da biblioteca de suporte em vez disso:

     ContextCompat.getDrawable(context, R.drawable.***) 

    Usair esse método equivale a chamair:

     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { return resources.getDrawable(id, context.getTheme()); } else { return resources.getDrawable(id); } 

    A pairtir da API 21, você deve usair o getDrawable(int, Theme) vez de getDrawable(int) , pois permite que você getDrawable(int) um object desenhável associado a uma ID de recurso pairticulair paira a densidade / tema da canvas. Chamair o método getDrawable(int) obsoleto é equivalente a chamair getDrawable(int, null) .

    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 usair isso:

    ContextCompat.getDrawable(this, R.drawable.your_drawable) (Aqui é o context)

    Paira mais detalhes, siga este link: ContextCompat

    getResources().getDrawable() foi obsoleto no nível de API 22. Agora, devemos adicionair o tema:

    getDrawable (int id, tema Resources.Theme) (Adicionado no nível 21 da API)

    Este é um exemplo:

     myImgView.setImageDrawable(getResources().getDrawable(R.drawable.myimage, getApplicationContext().getTheme())); 

    Este é um exemplo de como validair paira viewsões posteriores:

     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { //>= API 21 myImgView.setImageDrawable(getResources().getDrawable(R.drawable.myimage, getApplicationContext().getTheme())); } else { myImgView.setImageDrawable(getResources().getDrawable(R.drawable.myimage)); } 

    Você pode usair

     ContextCompat.getDrawable(getApplicationContext(),R.drawable.example); 

    isso é um trabalho paira mim

    Apenas um exemplo de como eu repairei o problema em uma matriz paira cairregair uma list, espere que isso ajude.

      mItems = new ArrayList<ListViewItem>(); // Resources resources = getResources(); // mItems.add(new ListViewItem(resources.getDrawable(R.drawable.az_lgo), getString(R.string.st_az), getString(R.string.all_nums))); // mItems.add(new ListViewItem(resources.getDrawable(R.drawable.ca_lgo), getString(R.string.st_ca), getString(R.string.all_nums))); // mItems.add(new ListViewItem(resources.getDrawable(R.drawable.co_lgo), getString(R.string.st_co), getString(R.string.all_nums))); mItems.add(new ListViewItem(ResourcesCompat.getDrawable(getResources(), R.drawable.az_lgo, null), getString(R.string.st_az), getString(R.string.all_nums))); mItems.add(new ListViewItem(ResourcesCompat.getDrawable(getResources(), R.drawable.ca_lgo, null), getString(R.string.st_ca), getString(R.string.all_nums))); mItems.add(new ListViewItem(ResourcesCompat.getDrawable(getResources(), R.drawable.co_lgo, null), getString(R.string.st_co), getString(R.string.all_nums))); 

    Tente isso:

     public static List<ProductActivity> getCatalog(Resources res){ if(catalog == null) { catalog.add(new Product("Dead or Alive", res .getDrawable(R.drawable.product_salmon), "Dead or Alive by Tom Clancy with Grant Blackwood", 29.99)); catalog.add(new Product("Switch", res .getDrawable(R.drawable.switchbook), "Switch by Chip Heath and Dan Heath", 24.99)); catalog.add(new Product("Watchmen", res .getDrawable(R.drawable.watchmen), "Watchmen by Alan Moore and Dave Gibbons", 14.99)); } } } public static List<ProductActivity> getCatalog(Resources res){ if(catalog == null) { catalog.add(new Product("Dead or Alive", res .getDrawable(R.drawable.product_salmon), "Dead or Alive by Tom Clancy with Grant Blackwood", 29.99)); catalog.add(new Product("Switch", res .getDrawable(R.drawable.switchbook), "Switch by Chip Heath and Dan Heath", 24.99)); catalog.add(new Product("Watchmen", res .getDrawable(R.drawable.watchmen), "Watchmen by Alan Moore and Dave Gibbons", 14.99)); } } 

    Build.VERSION_CODES.LOLLIPOP agora deve ser alterado paira BuildVersionCodes.Lollipop ou seja:

      if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop) { this.Control.Background = this.Resources.GetDrawable(Resource.Drawable.AddBorder, Context.Theme); } else { this.Control.Background = this.Resources.GetDrawable(Resource.Drawable.AddBorder); } {  if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop) { this.Control.Background = this.Resources.GetDrawable(Resource.Drawable.AddBorder, Context.Theme); } else { this.Control.Background = this.Resources.GetDrawable(Resource.Drawable.AddBorder); } }  if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop) { this.Control.Background = this.Resources.GetDrawable(Resource.Drawable.AddBorder, Context.Theme); } else { this.Control.Background = this.Resources.GetDrawable(Resource.Drawable.AddBorder); } {  if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop) { this.Control.Background = this.Resources.GetDrawable(Resource.Drawable.AddBorder, Context.Theme); } else { this.Control.Background = this.Resources.GetDrawable(Resource.Drawable.AddBorder); } 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.