The Resources.getColor(int id)
Metode telah usang.
@ColorInt
@Deprecated
public int getColor(@ColorRes int id) throws NotFoundException {
return getColor(id, null);
}
Apa yang harus saya lakukan?
The Resources.getColor(int id)
Metode telah usang.
@ColorInt
@Deprecated
public int getColor(@ColorRes int id) throws NotFoundException {
return getColor(id, null);
}
Apa yang harus saya lakukan?
Jawaban:
Mulai dari Android Support Library 23,
metode getColor () baru telah ditambahkan
ContextCompat
.Penjelasannya dari JavaDoc resmi:
Jadi, panggil saja :
Anda dapat memeriksa
ContextCompat.getColor()
kode sumber di GitHub .sumber
tl; dr:
Penjelasan:
Anda perlu menggunakan ContextCompat.getColor () , yang merupakan bagian dari Perpustakaan Dukungan V4 (ini akan bekerja untuk semua API sebelumnya).
Jika Anda belum menggunakan Perpustakaan Dukungan, Anda harus menambahkan baris berikut ke
dependencies
array di dalam aplikasi Andabuild.gradle
(catatan: itu opsional jika Anda sudah menggunakan perpustakaan appcompat (V7) ):Jika Anda peduli dengan tema, dokumentasi menetapkan bahwa:
sumber
M
, warna yang dikembalikan akan ditata untuk tema Konteks yang ditentukan. "ContextCompat
kelasnya berasal dari SupportV4. AppcompatV7 berfungsi juga karena mengandalkan SupportV4. Seperti yang mereka katakan pada dokumentasi Support Perpustakaan ,This library depends on the v4 Support Library. If you are using Ant or Eclipse, make sure you include the v4 Support Library as part of this library's classpath.
. Jadi masuk akal untuk tidak memasukkanAppcompatV7
jawaban.Saya tidak ingin menyertakan pustaka Dukungan hanya untuk getColor , jadi saya menggunakan sesuatu seperti
Saya kira kode harus bekerja dengan baik, dan yang usang
getColor
tidak dapat hilang dari API <23.Dan inilah yang saya gunakan di Kotlin:
sumber
Di Android Marshmallow banyak metode yang usang.
Misalnya, untuk mendapatkan penggunaan warna
Juga untuk menggunakan drawable
sumber
Untuk semua pengguna Kotlin di luar sana:
sumber
val color = ContextCompat.getColor(context, R.color.colorPrimary)
. Variabel "itu" bisa berupa apa saja, tetapi harus berupa Konteks .it
dalam hal inicontext
, karena saya gunakancontext?.let {
untuk memeriksa apakahcontext
tidak nol. FungsigetColor()
hanya menerima konteks yang bukan nol. Baca lebih lanjut di sini tentanglet
dan bagaimana menggunakannya: kotlinlang.org/docs/reference/scope-functions.html#letDi RecyclerView Anda di Kotlin
sumber
Gunakan
getColor(Resources, int, Theme)
metode dariResourcesCompat
dari Perpustakaan Dukungan Android.Saya pikir itu mencerminkan pertanyaan Anda lebih baik daripada
getColor(Context, int)
yangContextCompat
sejak Anda tanyakanResources
. Sebelum API level 23, tema tidak akan diterapkan dan metode ini memanggil,getColor(int)
tetapi Anda tidak akan memiliki peringatan yang sudah usang. Temanya juga mungkinnull
.sumber
Jika Anda tidak perlu sumber dayanya, gunakan
parseColor(String)
:Color.parseColor("#cc0066")
sumber
Jika min
getColor()
Anda saat ini. Level API 23, Anda cukup menggunakan seperti yang kami gunakan untuk mendapatkan sumber daya string dengangetString()
:Anda dapat membatasi untuk Tingkat API di bawah 23:
tetapi untuk membuatnya sederhana, Anda dapat melakukan seperti di bawah ini sebagai jawaban yang diterima:
Dari Sumber Daya .
Dari ContextCompat AndroidX .
Dari Dukungan ContextCompat
sumber
Saya juga frustrasi. Kebutuhan saya sangat mudah. Yang saya inginkan adalah warna ARGB dari sumber daya, jadi saya menulis metode statis sederhana.
sumber