Mein SDK geht also von 15 auf 21 und wenn ich anrufe setBackgroundDrawable()
, sagt mir Android Studio, dass es veraltet ist.
Ich dachte daran, es zu umgehen mit:
int sdk = android.os.Build.VERSION.SDK_INT;
if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) {
layout.setBackgroundDrawable(getResources().getDrawable(R.drawable.img_wstat_tstorm));
} else {
layout.setBackground(getResources().getDrawable(R.drawable.img_wstat_tstorm));
}
Aber dann bekomme ich eine Fehlermeldung bei "setBackground ()".
Wie würden Sie damit umgehen?
Antworten:
Es ist ein interessantes Thema. Die Art und Weise, wie Sie es tun, ist anscheinend richtig. Es ist eigentlich nur eine Namensentscheidungsänderung. Wie diese Antwort zeigt,
setBackground()
ruft man einfach ansetBackgroundDrawable()
:In diesem Thread finden Sie weitere Informationen zu all dem.
quelle
setBackground()
vor API16 nicht funktioniert. Eine Alternative könnte seinsetBackgroundResource
Vielleicht können Sie Folgendes versuchen:
quelle
Es ist lustig, weil diese Methode veraltet ist, aber wenn Sie sich den Android-Quellcode ansehen, werden Sie Folgendes finden:
quelle
Richtig ab dem 15. August 2018
Verwenden Sie die Support-Bibliotheken
quelle
Sie erhalten eine Fehlermeldung, weil getResources (). GetDrawable () eine ID (int) und keine Drawable als Argument verwendet. Versuche dies:
layout.setBackground(getResources().getDrawable(R.id.img_wstat_tstorm));
quelle
Benutze das:
quelle
Dies ist in meinem Fall richtig. Lösen Sie dieses Problem
quelle
quelle
Richtig ab dem 23. November 2018
Kotlin:
Wenn Sie den Theme-Parameter einschließen.
quelle
Ich verwende eine minSdkVersion 16 und eine targetSdkVersion 23. Das Folgende funktioniert für mich, es verwendet ContextCompat.getDrawable (context, R.drawable.drawable);
Anstatt zu verwenden:
layout.setBackground(getResources().getDrawable(R.drawable.img_wstat_tstorm));
Verwenden Sie lieber:
layout.setBackground(ContextCompat.getDrawable(getActivity(), R.drawable.img_wstat_tstorm));
getActivity()
wird in einem Fragment verwendet, wenn der Aufruf von einer Aktivität verwendet wirdthis
quelle
quelle