Rozpocząłem projekt kierowany na Androida Lollipop (21) i utworzyłem niestandardowy widok. Kiedy generowałem konstruktory dla widoku, otrzymałem nowy czwarty konstruktor, który pobiera więcej parametrów niż pozostałe.Dlaczego potrzebujemy czwartego konstruktora dla Lollipopa?
public class FooView extends FrameLayout {
public FooView(Context context) {
super(context);
}
public FooView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public FooView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
// This 4th constructor
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public FooView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
}
Moje pytanie brzmi, dlaczego jest nam potrzebna? Co by się stało, gdy usunę ten konstruktor i uruchomię aplikację na Lollipop?
zobaczyć https://stackoverflow.com/questions/9195713/do-i-need-all-three-constructors-for-an-android-custom-view –
Nie trzeba go i nic stanie się, jeśli go usuniesz (patrz poprzedni komentarz). Istnieje on w domyślnych widokach, dzięki czemu można przekazać domyślny zasób stylów (patrz odpowiedź na poniższe dokumenty:). – alanv
dlaczego ktoś chciałby to zrobić? – mbonnin