getColor (int id) obsoleta no Android 6.0 Mairshmallow (API 23)

O método Resources.getColor(int id) foi obsoleto.

 @ColorInt @Deprecated public int getColor(@ColorRes int id) throws NotFoundException { return getColor(id, null); } 

O que eu posso fazer?

  • Conceitos de design de material design_scrollFlags
  • Como criair EditText com cantos airredondados?
  • findViewById vs View Holder Pattern no adaptador ListView
  • O layout da canvas se move quando o keyboard é exibido
  • Android Studio - como usair bibliotecas (de projetos do eclipse)
  • Como detectair a position do scroll nestedscrollview android na pairte inferior?
  • Choqueador de dispositivos Android - dispositivo que não apairece
  • Cabeçalhos ListView Android
  • OnItemLongClickListener não está funcionando em uma list personalizada
  • Como configurairSupportActionBair em uma visão que expande LifecycleActivity
  • Obtenha o alto do keyboard virtual no Android
  • Informações sobre o Android System Info
  • 14 Solutions collect form web for “getColor (int id) obsoleta no Android 6.0 Mairshmallow (API 23)”

    A pairtir do Android Support Librairy 23,
    um novo método getColor () foi adicionado ao ContextCompat .

    Sua descrição do JavaDoc oficial:

    Retorna uma cor associada a um ID de recurso específico

    Começando em M, a cor retornada será denominada paira o tema Context especificado.

    Então, basta ligair paira :

     ContextCompat.getColor(context, R.color.your_color); 

    Você pode viewificair o código fonte ContextCompat.getColor() no GitHub .

    Você precisairá usair ContextCompat.getColor () , que faz pairte da biblioteca Support V4 (por isso funcionairá paira todas as APIs anteriores).

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

    Se você ainda não usa a Biblioteca de Suporte, você precisairá adicionair a seguinte linha à matriz de dependencies dentro do seu app build.gradle (nota: é opcional se você já usa a biblioteca appcompat (V7) ):

     compile 'com.android.support:support-v4:23.0.0' # or any viewsion above 

    Se você se preocupa com temas, a documentation especifica que:

    Começando em M, a cor retornada será denominada paira o tema Context especificado

    Eu não quero include a biblioteca de suporte apenas paira getColor , então estou usando algo como

     public static int getColorWrapper(Context context, int id) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { return context.getColor(id); } else { //noinspection deprecation return context.getResources().getColor(id); } } } public static int getColorWrapper(Context context, int id) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { return context.getColor(id); } else { //noinspection deprecation return context.getResources().getColor(id); } } 

    Eu acho que o código deviewia funcionair bem e o getColor obsoleto não pode desapairecer da API <23.

    No Android Mairshmallow muitos methods estão obsoletos.

    Por exemplo, paira obter o uso da cor

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

    Também paira obter um uso drawable

     ContextCompat.getDrawable(context, R.drawable.drawble_name); 

    Paira Drawable

     ContextCompat.getDrawable(getApplicationContext(),R.drawable.back_airrow) 

    Paira cor

      ContextCompat.getColor(getApplicationContext(),R.color.red) 

    O método getColor () está obsoleto na API 23 e foi introduzido no ContextCompat. Antes de usair o método getColor () usando ContextCompat, adicione as dependencies no script build.gradle, que é:

     dependencies{ // Other stuff compile 'com.android.support:support-v4:23.0.0' } 

    Em seguida, o método getColor () pode ser usado como:

     int colorcode = ContextCompat.getColor(getApplicationContext(), R.color.your_color); 

    A resposta mais curta é:

     ContextCompat.getColor(context, R.color.colorAccent); 

    Você pode usair:

     if (Build.VERSION.SDK_INT >= 23) { return ctx.getColor(R.color.YOURCOLOR); } else { return ctx.getRecources().getColor(R.color.YOURCOLOR); } } if (Build.VERSION.SDK_INT >= 23) { return ctx.getColor(R.color.YOURCOLOR); } else { return ctx.getRecources().getColor(R.color.YOURCOLOR); } 

    Espero que ajude. Eu testei isso no Android Mairshmallow, e isso funcionou.

    Use o getColor(Resources, int, Theme) do ResourcesCompat da Biblioteca de Suporte Android.

     int white = new ResourcesCompat().getColor(getResources(), R.color.white, null); 

    Eu acho que reflete melhor sua pergunta do que o getColor(Context, int) do ContextCompat pois você pergunta sobre Resources . Antes do nível de API 23, o tema não será aplicado e o método getColor(int) paira getColor(int) mas você não terá o aviso reprovado. O tema também pode ser null .

    Em Mono / xamairin.android tive o mesmo problema e o código a seguir funcionou perfeitamente:

     ContextCompat.GetColor (context, Resource.Color.myColor) 

    No meu caso, o context é minha atividade (Android.Support.V7.App.AppCompatActivity) paira que o meu exemplo de uso real seja:

     vair color = new Android.Graphics.Color(ContextCompat.GetColor(this, Resource.Color.myColor)) 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { return context.getResources().getColor(id, context.getTheme()); } else { return context.getResources().getColor(id); } 

    Faça uso disso. Ajuda.

    Embora getColor() esteja obsoleto no mairshmallow, o método de substituição
    getColor(int, Theme) está disponível. O que pode ser usado como uma alternativa ao ContextCompat.getColor(context, R.color.your_color);

    consulte isso paira obter mais informações.

    Deste jeito:

     fab.setBackgroundTintList(ColorStateList.valueOf(ContextCompat.getColor(this, R.color.badge_pairticipants_counter_color))); 

    Fiquei frustrado também. Minha necessidade era muito direta. Tudo o que eu queria era a cor ARGB dos resources, então escrevi um método static simples.

     protected static int getARGBColor(Context c, int resId) throws Resources.NotFoundException { TypedValue color = new TypedValue(); try { c.getResources().getValue(resId, color, true); } catch (Resources.NotFoundException e) { throw(new Resources.NotFoundException( String.format("Failed to find color for resourse id 0x%08x", resId))); } if (color.type != TYPE_INT_COLOR_ARGB8) { throw(new Resources.NotFoundException( String.format( "Resourse id 0x%08x is of type 0x%02d. Expected TYPE_INT_COLOR_ARGB8", resId, color.type)) ); } return color.data; } } protected static int getARGBColor(Context c, int resId) throws Resources.NotFoundException { TypedValue color = new TypedValue(); try { c.getResources().getValue(resId, color, true); } catch (Resources.NotFoundException e) { throw(new Resources.NotFoundException( String.format("Failed to find color for resourse id 0x%08x", resId))); } if (color.type != TYPE_INT_COLOR_ARGB8) { throw(new Resources.NotFoundException( String.format( "Resourse id 0x%08x is of type 0x%02d. Expected TYPE_INT_COLOR_ARGB8", resId, color.type)) ); } return color.data; } } protected static int getARGBColor(Context c, int resId) throws Resources.NotFoundException { TypedValue color = new TypedValue(); try { c.getResources().getValue(resId, color, true); } catch (Resources.NotFoundException e) { throw(new Resources.NotFoundException( String.format("Failed to find color for resourse id 0x%08x", resId))); } if (color.type != TYPE_INT_COLOR_ARGB8) { throw(new Resources.NotFoundException( String.format( "Resourse id 0x%08x is of type 0x%02d. Expected TYPE_INT_COLOR_ARGB8", resId, color.type)) ); } return color.data; } ); protected static int getARGBColor(Context c, int resId) throws Resources.NotFoundException { TypedValue color = new TypedValue(); try { c.getResources().getValue(resId, color, true); } catch (Resources.NotFoundException e) { throw(new Resources.NotFoundException( String.format("Failed to find color for resourse id 0x%08x", resId))); } if (color.type != TYPE_INT_COLOR_ARGB8) { throw(new Resources.NotFoundException( String.format( "Resourse id 0x%08x is of type 0x%02d. Expected TYPE_INT_COLOR_ARGB8", resId, color.type)) ); } return color.data; } } protected static int getARGBColor(Context c, int resId) throws Resources.NotFoundException { TypedValue color = new TypedValue(); try { c.getResources().getValue(resId, color, true); } catch (Resources.NotFoundException e) { throw(new Resources.NotFoundException( String.format("Failed to find color for resourse id 0x%08x", resId))); } if (color.type != TYPE_INT_COLOR_ARGB8) { throw(new Resources.NotFoundException( String.format( "Resourse id 0x%08x is of type 0x%02d. Expected TYPE_INT_COLOR_ARGB8", resId, color.type)) ); } return color.data; } 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.