У меня есть пользовательский RelativeLayout
, и я раздуваю файл res xml в нем. Это прекрасно работает, если я использую пользовательский макет в xml-файле и устанавливаю его как contentview, но если я попытаюсь добавить его в код с new LocationItem(this)
и addChild()
, метод findViewById
всегда возвращает null
в конструкторе пользовательского RelativeLayout
.findViewById возвращает null в пользовательском представлении после раздувания
Вот код:
public class LocationItem extends RelativeLayout {
private String parcelType;
private int countIntoBox, countFromBox;
private RelativeLayout deliveryContainer, pickupContainer;
private TextView countPickup, countDelivery;
public LocationItem(Context context) {
this(context, null);
}
public LocationItem(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public LocationItem(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
inflate(getContext(), R.layout.list_item_location, this);
deliveryContainer = (RelativeLayout) findViewById(R.id.rl_location_delivery_container);
pickupContainer = (RelativeLayout) findViewById(R.id.rl_location_pickup_container);
countPickup = (TextView) findViewById(R.id.tv_location_pickup_count);
countDelivery = (TextView) findViewById(R.id.tv_location_delivery_count);
countPickup.setOnClickListener(getShowNumberPickerListener());
countDelivery.setOnClickListener(getShowNumberPickerListener());
}
private OnClickListener getShowNumberPickerListener() {
return new OnClickListener() {
@Override
public void onClick(View view) {
showNumberPickerDialog(view);
}
};
} ...
}
Добавить настраиваемое представление в деятельности
mRootLayoutLocations.addView(new LocationItem(this));
мнение надувается правильно, потому что я могу видеть это, но когда я пытаюсь получить доступ к представлению внутри пользовательский просмотр приложения сбой с помощью NullPointerException.
Ваша проблема заключается в том, что mRootLayoutLocations равна нулю. Это не в определении этого класса. – torque203
Не определенно нет! mRootLayoutLocations не равно нулю! Этот макет находится в действии, где я добавляю LocationItems :) – Fabian