Вероятно, это Java больше, чем вопрос программирования Android. Во всяком случае, есть два способа объявить три стандартных конструктора представления: один использует this()
для вызова следующего наиболее параметризованного конструктора с null
и 0
, так как я видел здесь и выполнил все пользовательские init в последнем конструкторе.
Другим способом является вызов super()
, вызывающий каждый раз функцию, выполняющую задание init.
Один из способов более прав, чем другой (почему?), или это просто выбор стиля?
Хорошо, поэтому я думаю, что нет никакого технического участия, о котором можно подумать, по крайней мере, не так важно, чтобы люди с высоким уровнем доверия знали наверняка. так что... Я выводил его только на выбор стиля.
Вот мой код, когда я пытаюсь создать собственное представление. Я понимаю, что следует определить 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