Knopf setTextAppearance (Context Kontext, int resid) ist veraltetKnopf setTextAppearance ist
und setTextAppearance (int resid) ist veraltet - nur für die API-Ebene 23
Was soll ich stattdessen verwenden?
Knopf setTextAppearance (Context Kontext, int resid) ist veraltetKnopf setTextAppearance ist
und setTextAppearance (int resid) ist veraltet - nur für die API-Ebene 23
Was soll ich stattdessen verwenden?
Veraltet bedeutet, dass Unterstützung manchmal für die Zukunft fallengelassen wird, aber es funktioniert immer noch wie erwartet. Bei älteren APIs, gibt es keine Alternative, da die neuen setTextAppearance(int resid)
nur mit API-Ebene veröffentlicht wurde 23.
Wenn Sie für eine lange Zeit sicher sein möchten, können Sie den folgenden Code verwenden:
if (Build.VERSION.SDK_INT < 23) {
yourButton.setTextAppearance(context, resid);
} else {
yourButton.setTextAppearance(resid);
}
Dieser Code bevorzugt die neue Version auf Telefonen mit API-Stufe 23 oder höher, verwendet jedoch die alte, wenn die API-Stufe 23 nicht verfügbar ist.
Ich werde das gleiche wie @Daniel Zolnai sagen. Aber machen Sie nicht die Überprüfung Build.VERSION>SDK_INT < 23
an allen Stellen in Ihrem Code. Stellen Sie dies an einem Ort auf, so dass es für Sie einfach ist, dies in Zukunft zu entfernen oder Änderungen daran vorzunehmen. So wie es geht? Ich werde dies für den yourButton
Fall tun.
Verwenden Sie niemals Button
oder eine andere von Android zur Verfügung gestellte Ansicht. Ich sage das, weil Sie in der Zukunft etwas zwicken müssen und deshalb ist es besser, Ihre eigene oder etwas von dieser Art zu haben. So erstellen MyButton
erweitert Button
.
Innen MyButton
, setzen Sie den folgenden Code:
public void setTextAppearance(Context context, int resId) {
if (Build.VERSION.SDK_INT < 23) {
super.setTextAppearance(context, resId);
} else {
super.setTextAppearance(resId);
}
}
diese Weise können Sie immer setTextAppearance
, ohne dass verwenden können über die Überprüfung für BUILD-Versionen zu kümmern. Wenn Sie in Zukunft planen, das ganze Ding zu entfernen, dann müssen Sie refactor
an nur einem Ort. Das ist ein bisschen Arbeit, aber auf lange Sicht wird dir das sehr helfen und einige Wartungs-Albträume reduzieren.
Können wir sicher sein, dass 'TextView.setTextAppearance (int resId)' auch nicht vom System aufgerufen wird, was zu einem doppelten Aufruf von 'super..' führt? –
Ja. Nur API <23 ruft 'setTextAppearance (int resId)' auf. Es gibt keinen Doppelruf an "super". – Henry
du meinst API> = 23 Aufrufe * nur * 'STA (int)' und * nur * API <23 Aufrufe 'STA (context, int)', oder? :) Wann ruft das System diese Methoden ab? –
Welche API entwickeln Sie für –
Was ist Ihr Problem genau? Wenn Sie die alte Methode für neue Android-Versionen aufrufen, wird die neue Methode intern aufgerufen, sodass Sie das gleiche Ergebnis erhalten. – Froyo