объявление пользовательских конструкторов

1

Вероятно, это Java больше, чем вопрос программирования Android. Во всяком случае, есть два способа объявить три стандартных конструктора представления: один использует this() для вызова следующего наиболее параметризованного конструктора с null и 0, так как я видел здесь и выполнил все пользовательские init в последнем конструкторе.

Другим способом является вызов super(), вызывающий каждый раз функцию, выполняющую задание init.

Один из способов более прав, чем другой (почему?), или это просто выбор стиля?

  • 0
    Это действительно дубликат этого вопроса: stackoverflow.com/questions/4023344/this-vs-super-keywords Вы можете найти ответ там.
  • 0
    возможный дубликат этого против супер ключевых слов
Показать ещё 2 комментария
Теги:
initialization
constructor
custom-view

2 ответа

0
Лучший ответ

Хорошо, поэтому я думаю, что нет никакого технического участия, о котором можно подумать, по крайней мере, не так важно, чтобы люди с высоким уровнем доверия знали наверняка. так что... Я выводил его только на выбор стиля.

0

Вот мой код, когда я пытаюсь создать собственное представление. Я понимаю, что следует определить 3 основных конструктора для переопределения. Я не понимаю, почему это падает на объявление пользовательских конструкторов представления, если я добавляю JSONObject. Я все еще переопределяю все необходимые конструкторы в супер.

public abstract class _ASListItem extends ConstraintLayout implements IControl, IASListItem
{
    private JSONObject jsonObject = new JSONObject();

    public void onSetJSONObject(JSONObject jsonObject)
    {
        this.jsonObject = jsonObject;
    }

    public JSONObject onGetJSONObject() { return this.jsonObject; }


    public _ASListItem(JSONObject jsonObject, Context context)
    {
        super(context);
        this.onSetJSONObject(jsonObject);
    }
    public _ASListItem(JSONObject jsonObject, Context context, AttributeSet attrs)
    {
        super(context,attrs);
        this.onSetJSONObject(jsonObject);
    }

    public _ASListItem(JSONObject jsonObject, Context context, AttributeSet attrs, int defStyle)
    {
        super(context,attrs,defStyle);
        this.onSetJSONObject(jsonObject);
    }

    @Override
    protected void onAttachedToWindow()
    {
        super.onAttachedToWindow();
        this.onSetLayoutView(this);

        this.onInitInstance(this);
        this.onHandleInstance(this);
        this.onUpdateInstance(this);
    }
}

Вот ошибка, которую я получаю от Java-переводчика

java.lang.RuntimeException: Невозможно запустить действие ComponentInfo {mobile.application.amuni/mobile.application.amuni.activity.activityUserInfo}: android.view.InflateException: строка двоичного файла XML № 34: строка двоичного файла XML № 34: ошибка раздувать класс mobile.application.amuni.custom.customHeadUserInfo

Ещё вопросы

Сообщество Overcoder
Наверх
Меню