Подтвердить что ты не робот

.java не использует конструкторы View 2 или 3 аргумента; Атрибуты XML не будут работать

Я новичок, у меня проблема с созданием игры

выполнить процесс

activity_main.xml → MainActivity.java → GameLoop.java → action.xml(ошибка) → CustomView.java

Custom view CustomView is not using the 2- or 3-argument View constructors; XML attributes will not work

Я не понимаю......

4b9b3361

Ответ 1

Вам нужно переопределить другие 2 конструктора View в CustomView:

public CustomView(Context context) {
    super(context);
    init(context);
}

public CustomView(Context context, AttributeSet attrs) {
    super(context, attrs);
    init(context);
}

public CustomView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    init(context);
}

private void init(Context context) {
    //do stuff that was in your original constructor...
}

Ответ 2

Вам также нужно реализовать эти конструкторы:

//Constructor that is called when inflating a view from XML.
View(Context context, AttributeSet attrs)

//Perform inflation from XML and apply a class-specific base style.
View(Context context, AttributeSet attrs, int defStyle)

Ответ 3

Я думаю, это зависит от того, как вы создаете свой пользовательский вид и как вы его будете использовать

Не все 3 конструктора действительно нужны. Если вы создаете представление с атрибутом xml файла, но не будете использовать defstyle, его достаточно вызвать

public CustomView(Context context, AttributeSet attrs) {
    this(context, attrs);
    //Your code
}

Если вы не используете атрибуты и defstlye/i видели примеры для этого/Вы счастливы только позвонить

public CustomView(Context context) {
    super(context);
    //Your code
}

и если вы также хотите использовать defstyle и атрибуты

public CustomView(Context context, AttributeSet attrs) {
    this(context, attrs);
    //Yourcode
}